Odpowiedzi:
Łatwy.
Intent myIntent = new Intent(CurrentActivity.this, NextActivity.class);
myIntent.putExtra("key", value); //Optional parameters
CurrentActivity.this.startActivity(myIntent);
Dodatki są pobierane po drugiej stronie poprzez:
@Override
protected void onCreate(Bundle savedInstanceState) {
Intent intent = getIntent();
String value = intent.getStringExtra("key"); //if it's a string you stored.
}
Nie zapomnij dodać nowej aktywności do pliku AndroidManifest.xml:
<activity android:label="@string/app_name" android:name="NextActivity"/>
CurrentActivity.this.startActivity(myIntent)
i startActivity(myIntent)
?
Utwórz zamiar działania ViewPerson i przekaż PersonID (na przykład wyszukiwanie w bazie danych).
Intent i = new Intent(getBaseContext(), ViewPerson.class);
i.putExtra("PersonID", personID);
startActivity(i);
Następnie w ViewPerson Activity możesz uzyskać pakiet dodatkowych danych, upewnić się, że nie jest on zerowy (w przypadku, gdy czasami nie przekazujesz danych), a następnie pobierz dane.
Bundle extras = getIntent().getExtras();
if(extras !=null)
{
personID = extras.getString("PersonID");
}
Teraz, jeśli chcesz współdzielić dane między dwoma Działaniami, możesz także mieć Global Singleton.
public class YourApplication extends Application
{
public SomeDataClass data = new SomeDataClass();
}
Następnie nazwij to w dowolnej czynności, wykonując:
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
Aktualne odpowiedzi są świetne, ale dla początkujących potrzebna jest bardziej kompleksowa odpowiedź. Istnieją 3 różne sposoby rozpoczęcia nowej działalności w systemie Android i wszystkie one wykorzystują Intent
klasę; Zamierzenie | Programiści Androida .
onClick
atrybutu przycisku. (Początkujący)OnClickListener()
anonimowej klasy. (Pośredni)switch
instrukcji. (Zawodowiec)Oto link do mojego przykładu, jeśli chcesz śledzić:
onClick
atrybutu przycisku. (Początkujący)Przyciski mają onClick
atrybut znaleziony w pliku .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" />
W klasie 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);
}
Zaleta : łatwa do wykonania w locie, modułowa i może z łatwością ustawić wiele onClick
s na ten sam cel.
Wada : trudna czytelność podczas recenzowania.
OnClickListener()
anonimowej klasy. (Pośredni)Dzieje się tak, gdy ustawiasz osobne setOnClickListener()
dla każdego z nich button
i zastępujesz onClick()
je według własnych zamiarów.
W klasie 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);}
});
Zaleta : łatwa do wykonania w locie.
Wada : Będzie wiele anonimowych klas, które utrudnią czytelność podczas recenzji.
switch
instrukcji. (Zawodowiec)Dzieje się tak, gdy używasz switch
instrukcji dla przycisków w ramach onClick()
metody do zarządzania wszystkimi przyciskami działania.
W klasie 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;
}
Zaleta : Łatwe zarządzanie przyciskami, ponieważ wszystkie zamiary przycisków są rejestrowane za pomocą jednej onClick()
metody
W drugiej części pytania, przekazywanie danych, zobacz Jak przesyłać dane między działaniami w aplikacji na Androida?
Gdy użytkownik kliknie przycisk, bezpośrednio w pliku XML w następujący sposób:
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextButton"
android:onClick="buttonClickFunction"/>
Za pomocą atrybutu android:onClick
deklarujemy nazwę metody, która musi być obecna w działaniu nadrzędnym. Więc muszę stworzyć tę metodę w naszej działalności w ten sposób:
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,
Myślę, że dodatkowe informacje należy podać przed rozpoczęciem działania, w przeciwnym razie dane nie będą jeszcze dostępne, jeśli uzyskujesz do nich dostęp za pomocą metody onCreate NextActivity.
Intent myIntent = new Intent(CurrentActivity.this, NextActivity.class);
myIntent.putExtra("key", value);
CurrentActivity.this.startActivity(myIntent);
Z działania wysyłania wypróbuj następujący kod
//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);
}
Z działania odbierającego wypróbuj następujący kod:
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);
Następnie wystarczy dodać następujący kod do pliku AndroidManifest.xml
android:name="packagename.NameOfTheReceivingActivity"
android:label="Title of the Activity"
android:parentActivityName="packagename.NameOfSendingActivity"
Wypróbuj tę prostą metodę.
startActivity(new Intent(MainActivity.this, SecondActivity.class));
Sposobem na rozpoczęcie nowych działań jest transmisja zamiaru, a istnieje szczególny rodzaj zamiaru, którego można użyć do przekazania danych z jednego działania do drugiego. Moja rekomendacja to przejrzenie dokumentów programistów Androida związanych z zamiarami ; zawiera wiele informacji na ten temat i zawiera również przykłady.
Pierwsza aktywność
startActivity(Intent(this, SecondActivity::class.java)
.putExtra("key", "value"))
Druga aktywność
val value = getIntent().getStringExtra("key")
Sugestia
Zawsze przechowuj klucze w stałym pliku, aby lepiej zarządzać.
companion object {
val PUT_EXTRA_USER = "user"
}
startActivity(Intent(this, SecondActivity::class.java)
.putExtra(PUT_EXTRA_USER, "value"))
Rozpoczęcie aktywności od innej aktywności jest bardzo częstym scenariuszem wśród aplikacji na Androida.
Aby rozpocząć aktywność, potrzebujesz zamiaru obiektu .
Obiekt docelowy przyjmuje dwa parametry w swoim konstruktorze
Przykład:
Na przykład, jeśli masz dwie czynności, powiedz HomeActivity
i DetailActivity
chcesz rozpocząć DetailActivity
od HomeActivity
(HomeActivity -> DetailActivity).
Oto fragment kodu, który pokazuje, jak uruchomić DetailActivity
HomeActivity.
Intent i = new Intent(HomeActivity.this,DetailActivity.class);
startActivity(i);
I gotowe.
Wracając do przycisku kliknij część.
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);
}
});
Rozpocznij inną aktywność od tej aktywności i możesz przekazać parametry również przez Obiekt pakietu.
Intent intent = new Intent(getBaseContext(), YourActivity.class);
intent.putExtra("USER_NAME", "xyz@gmail.com");
startActivity(intent);
Odzyskaj dane w innym działaniu (YourActivity)
String s = getIntent().getStringExtra("USER_NAME");
Zaimplementuj interfejs View.OnClickListener i zastąp metodę 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;
}
Chociaż udzielono już prawidłowych odpowiedzi, ale jestem tutaj, aby znaleźć odpowiedź w języku Kotlin. To pytanie nie dotyczy konkretnego języka, dlatego dodam kod, aby wykonać to zadanie w języku Kotlin.
Oto jak to robisz w Kotlin dla Andorida
testActivityBtn1.setOnClickListener{
val intent = Intent(applicationContext,MainActivity::class.java)
startActivity(intent)
}
Najprostszym sposobem na otwarcie aktywności po kliknięciu przycisku jest:
onclick
funkcji. 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 (wystarczy dodać ten blok kodu do istniejącego)
</activity>
<activity android:name=".SecondActivity">
</activity>
Najpierw weź Button w 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"
/>
Stwórz listę przycisku.
pre.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
startActivity(intent);
}
});
Po kliknięciu przycisku:
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);
}
});
Aby otrzymać dodatkowe dane od NextActivity.class
:
Bundle extra = getIntent().getExtras();
if (extra != null){
String str = (String) extra.get("data"); // get a object
}
Napisz kod w pierwszej aktywności.
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();
}
});
W secondActivity.class
String name = getIntent().getStringExtra("Key");
Umieść widget przycisku w XML tak jak poniżej
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button"
/>
Po tej inicjalizacji i obsłudze nasłuchiwania kliknięć w działaniu jak poniżej ...
W metodzie Activity On Create:
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);
}
});