Відповіді:
Легко.
Intent myIntent = new Intent(CurrentActivity.this, NextActivity.class);
myIntent.putExtra("key", value); //Optional parameters
CurrentActivity.this.startActivity(myIntent);
Додаткові дані отримуються з іншого боку за допомогою:
@Override
protected void onCreate(Bundle savedInstanceState) {
Intent intent = getIntent();
String value = intent.getStringExtra("key"); //if it's a string you stored.
}
Не забудьте додати свою нову діяльність у AndroidManifest.xml:
<activity android:label="@string/app_name" android:name="NextActivity"/>
CurrentActivity.this.startActivity(myIntent)
і startActivity(myIntent)
?
Створіть намір до діяльності ViewPerson та передайте PersonID (наприклад, для пошуку бази даних).
Intent i = new Intent(getBaseContext(), ViewPerson.class);
i.putExtra("PersonID", personID);
startActivity(i);
Потім у ViewPerson Activity ви можете отримати пакет додаткових даних, переконайтеся, що він не є нульовим (у випадку, якщо ви іноді не передаєте дані), а потім отримайте дані.
Bundle extras = getIntent().getExtras();
if(extras !=null)
{
personID = extras.getString("PersonID");
}
Тепер, якщо вам потрібно обмінюватися даними між двома видами діяльності, ви також можете мати глобальний синглтон.
public class YourApplication extends Application
{
public SomeDataClass data = new SomeDataClass();
}
Потім зателефонуйте в будь-яку діяльність:
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
Поточні відповіді чудові, але для початківців потрібна більш вичерпна відповідь. Існує 3 різних способи розпочати нову діяльність в Android, і всі вони використовують Intent
клас; Намір | Android Developers .
onClick
атрибута кнопки. (Новачок)OnClickListener()
анонімного класу. (Проміжний)switch
оператора. (Про)Ось посилання на мій приклад, якщо ви хочете слідувати далі:
onClick
атрибута кнопки. (Новачок)Кнопки мають onClick
атрибут, який знаходиться у файлі .xml:
<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:
@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);
}
Перевага : Легко виготовити на льоту, модульно, і можна легко встановити декілька onClick
s на один і той же намір.
Недолік : Важка читабельність при перегляді.
OnClickListener()
анонімного класу. (Проміжний)Це коли ви встановлюєте окремий setOnClickListener()
для кожного button
і переосмислюєте кожного onClick()
з його власним наміром.
У класі Java:
@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);}
});
Перевага : Легко виготовити на льоту.
Недолік : Існує багато анонімних класів, які ускладнюють читабельність при перегляді.
switch
оператора. (Про)Це коли ви використовуєте switch
оператор для своїх кнопок у межах onClick()
методу для управління всіма кнопками діяльності.
У класі Java:
@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;
}
Перевага : просте управління кнопками, оскільки всі наміри кнопки реєструються в одному onClick()
методі
У другій частині запитання, передаючи дані, див. Як я можу передавати дані між видами діяльності в додатку Android?
Коли користувач натискає кнопку, безпосередньо всередині XML:
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextButton"
android:onClick="buttonClickFunction"/>
Використовуючи атрибут, android:onClick
ми оголошуємо ім'я методу, який повинен бути присутнім у батьківській діяльності. Тому я повинен створити цей метод всередині нашої діяльності так:
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.
Еммануїл,
Я думаю, що додаткову інформацію потрібно поставити перед початком діяльності, інакше дані ще не будуть доступні, якщо ви отримуєте доступ до неї в методі onCreate NextActivity.
Intent myIntent = new Intent(CurrentActivity.this, NextActivity.class);
myIntent.putExtra("key", value);
CurrentActivity.this.startActivity(myIntent);
Спробуйте активувати наступний код
//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);
}
Спробуйте отримати наступний код:
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);
Потім просто додайте наступний код у файл AndroidManifest.xml
android:name="packagename.NameOfTheReceivingActivity"
android:label="Title of the Activity"
android:parentActivityName="packagename.NameOfSendingActivity"
Спробуйте цей простий метод.
startActivity(new Intent(MainActivity.this, SecondActivity.class));
Спосіб початку нових заходів - це трансляція намірів, і існує певний вид намірів, який ви можете використовувати для передачі даних від однієї діяльності до іншої. Моя рекомендація полягає в тому, щоб перевірити документи розробника Android, пов’язані з намірами ; це велика кількість інформації про цю тему, і вона має приклади.
Перша діяльність
startActivity(Intent(this, SecondActivity::class.java)
.putExtra("key", "value"))
Друга діяльність
val value = getIntent().getStringExtra("key")
Пропозиція
Завжди кладіть ключі в постійний файл для більш керованого способу.
companion object {
val PUT_EXTRA_USER = "user"
}
startActivity(Intent(this, SecondActivity::class.java)
.putExtra(PUT_EXTRA_USER, "value"))
Почати діяльність з іншої діяльності - дуже поширений сценарій серед додатків для Android.
Щоб розпочати діяльність, вам потрібен об'єкт Intent .
Об'єкт наміру приймає у своєму конструкторі два параметри
Приклад:
Так, наприклад, якщо у вас є два види діяльності, скажімо , HomeActivity
і , DetailActivity
і ви хочете , щоб почати DetailActivity
з HomeActivity
(HomeActivity -> DetailActivity).
Ось фрагмент коду, який показує, як запустити DetailActivity з
Домашня активність.
Intent i = new Intent(HomeActivity.this,DetailActivity.class);
startActivity(i);
І ви закінчили.
Повертаючись до кнопки, натисніть на частину.
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);
}
});
Почніть іншу діяльність з цієї діяльності, і ви також можете передавати параметри і через об'єкт Bundle.
Intent intent = new Intent(getBaseContext(), YourActivity.class);
intent.putExtra("USER_NAME", "xyz@gmail.com");
startActivity(intent);
Отримати дані в іншій діяльності (YourActivity)
String s = getIntent().getStringExtra("USER_NAME");
Реалізуйте інтерфейс View.OnClickListener та замініть метод onClick.
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;
}
Хоча відповіді вже надано, але я тут шукаю відповідь мовою Котлін. Це питання не стосується мови, тому я додаю код для виконання цього завдання мовою Котліна.
Ось як ви це робите в Котліні для andorid
testActivityBtn1.setOnClickListener{
val intent = Intent(applicationContext,MainActivity::class.java)
startActivity(intent)
}
Найпростіший спосіб відкрити діяльність при натисканні кнопки:
onclick
функціонування. 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 (Просто додайте цей блок коду до існуючого)
</activity>
<activity android:name=".SecondActivity">
</activity>
Спершу візьміть кнопку в xml.
<Button
android:id="@+id/pre"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@mipmap/ic_launcher"
android:text="Your Text"
/>
Зробіть списокник кнопки.
pre.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
startActivity(intent);
}
});
При натисканні кнопки:
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);
}
});
Щоб отримати додаткові дані від NextActivity.class
:
Bundle extra = getIntent().getExtras();
if (extra != null){
String str = (String) extra.get("data"); // get a object
}
Напишіть код у своїй першій діяльності.
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();
}
});
У другомуActivity.class
String name = getIntent().getStringExtra("Key");
Розмістіть віджет кнопки в xml, як показано нижче
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button"
/>
Після цього ініціалізуйте та обробляйте слухача кліків у такій діяльності, як нижче ..
У способі "Активність у створенні":
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);
}
});