Yanıtlar:
Kolay.
Intent myIntent = new Intent(CurrentActivity.this, NextActivity.class);
myIntent.putExtra("key", value); //Optional parameters
CurrentActivity.this.startActivity(myIntent);
Ekstralar diğer taraftan şu şekilde alınır:
@Override
protected void onCreate(Bundle savedInstanceState) {
Intent intent = getIntent();
String value = intent.getStringExtra("key"); //if it's a string you stored.
}
AndroidManifest.xml dosyasına yeni etkinliğinizi eklemeyi unutmayın:
<activity android:label="@string/app_name" android:name="NextActivity"/>
CurrentActivity.this.startActivity(myIntent)
ve startActivity(myIntent)
?
Bir ViewPerson etkinliğine yönelik bir amaç oluşturun ve PersonID'yi iletin (örneğin, veritabanı araması için).
Intent i = new Intent(getBaseContext(), ViewPerson.class);
i.putExtra("PersonID", personID);
startActivity(i);
Sonra ViewPerson Etkinliği'nde, fazladan veri paketini alabilir, boş olmadığından emin olabilirsiniz (bazen veri geçmezseniz), ardından verileri alabilirsiniz.
Bundle extras = getIntent().getExtras();
if(extras !=null)
{
personID = extras.getString("PersonID");
}
Şimdi iki Etkinlik arasında veri paylaşmanız gerekiyorsa, bir Global Singleton'a da sahip olabilirsiniz.
public class YourApplication extends Application
{
public SomeDataClass data = new SomeDataClass();
}
Sonra herhangi bir etkinlikte şu şekilde arayın:
YourApplication appState = ((YourApplication)this.getApplication());
appState.data.CallSomeFunctionHere(); // Do whatever you need to with data here. Could be setter/getter or some other type of logic
Mevcut yanıtlar harika ama yeni başlayanlar için daha kapsamlı bir cevap gerekiyor. Android'de yeni bir etkinlik başlatmanın 3 farklı yolu vardır ve hepsi Intent
sınıfı kullanır ; Amaç | Android Geliştiricileri .
onClick
Düğme özniteliğini kullanma . (Acemi)OnClickListener()
Anonim bir sınıf aracılığıyla bir atama . (Orta düzey)switch
deyimi. (Pro)İşte bağlantı birlikte takip etmek istiyorsanız benim örneğe:
onClick
Düğme özniteliğini kullanma . (Acemi)Düğmeler onClick
, .xml dosyasında bulunan bir özniteliğe sahiptir:
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="goToAnActivity"
android:text="to an activity" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="goToAnotherActivity"
android:text="to another activity" />
Java sınıfında:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);
}
public void goToAnActivity(View view) {
Intent intent = new Intent(this, AnActivity.class);
startActivity(intent);
}
public void goToAnotherActivity(View view) {
Intent intent = new Intent(this, AnotherActivity.class);
startActivity(intent);
}
Avantajı : Modüler olarak kolayca yapılabilir, birden fazla onClick
s'yi aynı amaca kolayca ayarlayabilir .
Dezavantaj : İnceleme sırasında zor okunabilirlik.
OnClickListener()
Anonim bir sınıf aracılığıyla bir atama . (Orta düzey)Bu, setOnClickListener()
her birine ayrı ayrı ayarladığınız button
ve her birini onClick()
kendi niyetiyle geçersiz kıldığınız zamandır.
Java sınıfında:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);
Button button1 = (Button) findViewById(R.id.button1);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(view.getContext(), AnActivity.class);
view.getContext().startActivity(intent);}
});
Button button2 = (Button) findViewById(R.id.button2);
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(view.getContext(), AnotherActivity.class);
view.getContext().startActivity(intent);}
});
Avantajı : Anında yapmak kolaydır.
Dezavantajı : İncelenirken okunabilirliği zorlaştıracak birçok anonim sınıf olacaktır.
switch
deyimi. (Pro)Bu, switch
içindeki düğmeleriniz için bir ifade kullandığınızdaonClick()
tüm Etkinlik düğmelerini yönetmek yöntem .
Java sınıfında:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);
Button button1 = (Button) findViewById(R.id.button1);
Button button2 = (Button) findViewById(R.id.button2);
button1.setOnClickListener(this);
button2.setOnClickListener(this);
}
@Override
public void onClick(View view) {
switch (view.getId()){
case R.id.button1:
Intent intent1 = new Intent(this, AnActivity.class);
startActivity(intent1);
break;
case R.id.button2:
Intent intent2 = new Intent(this, AnotherActivity.class);
startActivity(intent2);
break;
default:
break;
}
Avantajı : Tüm düğme hedefleri tek bir onClick()
yöntemle kaydedildiği için kolay düğme yönetimi
Sorunun ikinci bölümü olan veri aktarımı için lütfen Android uygulamasındaki Etkinlikler arasında nasıl veri aktarırım? Bölümüne bakın.
Kullanıcı düğmeyi tıkladığında, doğrudan XML içinde şöyle:
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextButton"
android:onClick="buttonClickFunction"/>
Özniteliği kullanarak android:onClick
üst etkinlikte bulunması gereken yöntem adını beyan ederiz. Bu yüzden faaliyetimizde böyle bir yöntem yaratmak zorundayım:
public void buttonClickFunction(View v)
{
Intent intent = new Intent(getApplicationContext(), Your_Next_Activity.class);
startActivity(intent);
}
Intent iinent= new Intent(Homeactivity.this,secondactivity.class);
startActivity(iinent);
Intent in = new Intent(getApplicationContext(),SecondaryScreen.class);
startActivity(in);
This is an explicit intent to start secondscreen activity.
Emmanuel
Aktivite başlamadan önce ekstra bilgi koymak gerektiğini düşünüyorum, aksi takdirde NextActivity onCreate yönteminde erişiyorsanız veriler henüz mevcut olmayacaktır.
Intent myIntent = new Intent(CurrentActivity.this, NextActivity.class);
myIntent.putExtra("key", value);
CurrentActivity.this.startActivity(myIntent);
Gönderen Etkinlikten şu kodu deneyin
//EXTRA_MESSAGE is our key and it's value is 'packagename.MESSAGE'
public static final String EXTRA_MESSAGE = "packageName.MESSAGE";
@Override
protected void onCreate(Bundle savedInstanceState) {
....
//Here we declare our send button
Button sendButton = (Button) findViewById(R.id.send_button);
sendButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//declare our intent object which takes two parameters, the context and the new activity name
// the name of the receiving activity is declared in the Intent Constructor
Intent intent = new Intent(getApplicationContext(), NameOfReceivingActivity.class);
String sendMessage = "hello world"
//put the text inside the intent and send it to another Activity
intent.putExtra(EXTRA_MESSAGE, sendMessage);
//start the activity
startActivity(intent);
}
Alıcı Etkinlikten şu kodu deneyin:
protected void onCreate(Bundle savedInstanceState) {
//use the getIntent()method to receive the data from another activity
Intent intent = getIntent();
//extract the string, with the getStringExtra method
String message = intent.getStringExtra(NewActivityName.EXTRA_MESSAGE);
Ardından AndroidManifest.xml dosyasına aşağıdaki kodu ekleyin
android:name="packagename.NameOfTheReceivingActivity"
android:label="Title of the Activity"
android:parentActivityName="packagename.NameOfSendingActivity"
Bu basit yöntemi deneyin.
startActivity(new Intent(MainActivity.this, SecondActivity.class));
Yeni etkinliklere başlamanın yolu bir niyet yayınlamaktır ve verileri bir etkinlikten diğerine aktarmak için kullanabileceğiniz belirli bir niyet türü vardır. Tavsiyem , amaçlarla ilgili Android geliştirici belgelerine göz atmanız ; konuyla ilgili bir bilgi hazinesi ve örnekleri de var.
İlk Etkinlik
startActivity(Intent(this, SecondActivity::class.java)
.putExtra("key", "value"))
İkinci Etkinlik
val value = getIntent().getStringExtra("key")
Öneri
Daha yönetilen bir yol için anahtarları her zaman sabit dosyaya koyun.
companion object {
val PUT_EXTRA_USER = "user"
}
startActivity(Intent(this, SecondActivity::class.java)
.putExtra(PUT_EXTRA_USER, "value"))
Başka bir etkinlikten bir etkinlik başlatmak, android uygulamaları arasında çok yaygın bir senaryodur.
Bir aktiviteyi başlatmak için bir Intent nesnesine ihtiyacınız vardır .
Bir niyet nesnesi yapıcısında iki parametre alır
Misal:
Eğer iki aktiviteyi varsa, yani örneğin, demek HomeActivity
ve DetailActivity
ve başlatmak istediğiniz DetailActivity
den HomeActivity
(HomeActivity -> DetailActivity).
DetailActivity'nin nasıl başlatılacağını gösteren kod snippet'i
HomeActivity.
Intent i = new Intent(HomeActivity.this,DetailActivity.class);
startActivity(i);
Ve işiniz bitti.
Düğmeye tıklamak parçası geri geliyor.
Button button = (Button) findViewById(R.id.someid);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent i = new Intent(HomeActivity.this,DetailActivity.class);
startActivity(i);
}
});
Bu aktiviteden başka bir aktivite başlatın ve parametreleri Bundle Object ile de iletebilirsiniz.
Intent intent = new Intent(getBaseContext(), YourActivity.class);
intent.putExtra("USER_NAME", "xyz@gmail.com");
startActivity(intent);
Başka bir etkinlikteki verileri alma (YourActivity)
String s = getIntent().getStringExtra("USER_NAME");
View.OnClickListener arabirimini uygulayın ve onClick yöntemini geçersiz kılın.
ImageView btnSearch;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_search1);
ImageView btnSearch = (ImageView) findViewById(R.id.btnSearch);
btnSearch.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btnSearch: {
Intent intent = new Intent(Search.this,SearchFeedActivity.class);
startActivity(intent);
break;
}
Her ne kadar uygun cevaplar verilmiş olsa da ben Kotlin dilinde cevap aramak için buradayım. Bu soru dile özgü değildir, bu yüzden Kotlin dilinde bu görevi gerçekleştirmek için kod ekliyorum.
Andorid için Kotlin'de bunu nasıl yapacağınız
testActivityBtn1.setOnClickListener{
val intent = Intent(applicationContext,MainActivity::class.java)
startActivity(intent)
}
Düğme tıklatıldığında etkinliği açmanın en basit yolu:
onclick
işlevine bir ad verin . MainActivity.java
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import android.content.Intent;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void goToAnotherActivity(View view) {
Intent intent = new Intent(this, SecondActivity.class);
startActivity(intent);
}
}
SecondActivity.java
package com.example.myapplication;
import android.app.Activity;
import android.os.Bundle;
public class SecondActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity1);
}
}
AndroidManifest.xml (Bu kod bloğunu mevcut olana eklemeniz yeterlidir)
</activity>
<activity android:name=".SecondActivity">
</activity>
Önce xml'de Düğme Al.
<Button
android:id="@+id/pre"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@mipmap/ic_launcher"
android:text="Your Text"
/>
Düğmenin listelemesini yapın.
pre.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
startActivity(intent);
}
});
Düğme tıklandığında:
loginBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent= new Intent(getApplicationContext(), NextActivity.class);
intent.putExtra("data", value); //pass data
startActivity(intent);
}
});
Fazladan veri almak için NextActivity.class
:
Bundle extra = getIntent().getExtras();
if (extra != null){
String str = (String) extra.get("data"); // get a object
}
İlk etkinliğinizde kodu yazın.
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(MainActivity.this, SecondAcitvity.class);
//You can use String ,arraylist ,integer ,float and all data type.
intent.putExtra("Key","value");
startActivity(intent);
finish();
}
});
SecondActivity.class içinde
String name = getIntent().getStringExtra("Key");
Düğme widget'ını xml içine aşağıdaki gibi yerleştirin
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button"
/>
Bundan sonra aşağıdaki gibi Etkinlik'te tıklama dinleyicisini başlatın ve işleyin.
Etkinlik Üzerine Oluşturma yönteminde:
Button button =(Button) findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new
Intent(CurrentActivity.this,DesiredActivity.class);
startActivity(intent);
}
});