Câu trả lời:
Dễ dàng.
Intent myIntent = new Intent(CurrentActivity.this, NextActivity.class);
myIntent.putExtra("key", value); //Optional parameters
CurrentActivity.this.startActivity(myIntent);
Extras được lấy ở phía bên kia thông qua:
@Override
protected void onCreate(Bundle savedInstanceState) {
Intent intent = getIntent();
String value = intent.getStringExtra("key"); //if it's a string you stored.
}
Đừng quên thêm hoạt động mới của bạn vào AndroidManifest.xml:
<activity android:label="@string/app_name" android:name="NextActivity"/>
CurrentActivity.this.startActivity(myIntent)
và startActivity(myIntent)
không?
Tạo một ý định cho một hoạt động ViewPerson và vượt qua PersonID (ví dụ để tìm kiếm cơ sở dữ liệu).
Intent i = new Intent(getBaseContext(), ViewPerson.class);
i.putExtra("PersonID", personID);
startActivity(i);
Sau đó, trong Hoạt động của ViewPerson, bạn có thể nhận được gói dữ liệu bổ sung, đảm bảo rằng nó không có giá trị (trong trường hợp nếu đôi khi bạn không truyền dữ liệu), sau đó lấy dữ liệu.
Bundle extras = getIntent().getExtras();
if(extras !=null)
{
personID = extras.getString("PersonID");
}
Bây giờ nếu bạn cần chia sẻ dữ liệu giữa hai Hoạt động, bạn cũng có thể có Global Singleton.
public class YourApplication extends Application
{
public SomeDataClass data = new SomeDataClass();
}
Sau đó gọi nó trong bất kỳ hoạt động nào bằng cách:
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
Câu trả lời hiện tại là tuyệt vời nhưng một câu trả lời toàn diện hơn là cần thiết cho người mới bắt đầu. Có 3 cách khác nhau để bắt đầu một hoạt động mới trong Android và tất cả đều sử dụng Intent
lớp; Ý định | Nhà phát triển Android .
onClick
thuộc tính của Nút. (Người bắt đầu)OnClickListener()
thông qua một lớp ẩn danh. (Trung gian)switch
câu lệnh. (Chuyên nghiệp)Đây là liên kết đến ví dụ của tôi nếu bạn muốn theo dõi:
onClick
thuộc tính của Nút. (Người bắt đầu)Các nút có một onClick
thuộc tính được tìm thấy trong tệp .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" />
Trong lớp 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);
}
Ưu điểm : Dễ dàng thực hiện khi đang di chuyển, mô-đun và có thể dễ dàng đặt nhiều onClick
s cho cùng một mục đích.
Nhược điểm : Khó đọc khi xem lại.
OnClickListener()
thông qua một lớp ẩn danh. (Trung gian)Đây là khi bạn đặt riêng setOnClickListener()
cho từng mục button
và ghi đè lên từng onClick()
mục đích riêng.
Trong lớp 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);}
});
Ưu điểm : Dễ dàng thực hiện khi đang bay.
Nhược điểm : Sẽ có rất nhiều lớp ẩn danh sẽ khiến việc đọc trở nên khó khăn khi xem xét.
switch
câu lệnh. (Chuyên nghiệp)Đây là khi bạn sử dụng một switch
tuyên bố cho các nút của bạn trongonClick()
phương thức để quản lý tất cả các nút của Hoạt động.
Trong lớp 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;
}
Ưu điểm : Quản lý nút dễ dàng vì tất cả các ý định nút được đăng ký trong một onClick()
phương thức duy nhất
Đối với phần thứ hai của câu hỏi, truyền dữ liệu, vui lòng xem Làm cách nào để chuyển dữ liệu giữa các Hoạt động trong ứng dụng Android?
Khi người dùng nhấp vào nút, trực tiếp bên trong XML như thế:
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextButton"
android:onClick="buttonClickFunction"/>
Sử dụng thuộc tính, android:onClick
chúng tôi khai báo tên phương thức phải có trên hoạt động cha. Vì vậy, tôi phải tạo ra phương pháp này trong hoạt động của chúng tôi như thế:
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,
Tôi nghĩ rằng nên đặt thêm thông tin trước khi bắt đầu hoạt động nếu không dữ liệu sẽ không khả dụng nếu bạn truy cập vào phương thức onCreate của NextActivity.
Intent myIntent = new Intent(CurrentActivity.this, NextActivity.class);
myIntent.putExtra("key", value);
CurrentActivity.this.startActivity(myIntent);
Từ hoạt động gửi hãy thử đoạn mã sau
//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);
}
Từ hoạt động nhận, hãy thử đoạn mã sau:
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);
Sau đó, chỉ cần thêm đoạn mã sau vào tệp AndroidManifest.xml
android:name="packagename.NameOfTheReceivingActivity"
android:label="Title of the Activity"
android:parentActivityName="packagename.NameOfSendingActivity"
Hãy thử phương pháp đơn giản này.
startActivity(new Intent(MainActivity.this, SecondActivity.class));
Cách để bắt đầu các hoạt động mới là phát một ý định và có một loại ý định cụ thể mà bạn có thể sử dụng để truyền dữ liệu từ hoạt động này sang hoạt động khác. Đề nghị của tôi là bạn nên kiểm tra các tài liệu dành cho nhà phát triển Android có liên quan đến ý định ; đó là vô số thông tin về chủ đề này và cũng có ví dụ.
Hoạt động đầu tiên
startActivity(Intent(this, SecondActivity::class.java)
.putExtra("key", "value"))
Hoạt động thứ hai
val value = getIntent().getStringExtra("key")
Gợi ý
Luôn đặt các khóa trong tệp không đổi để quản lý nhiều hơn.
companion object {
val PUT_EXTRA_USER = "user"
}
startActivity(Intent(this, SecondActivity::class.java)
.putExtra(PUT_EXTRA_USER, "value"))
Bắt đầu một hoạt động từ một hoạt động khác là kịch bản rất phổ biến trong số các ứng dụng Android.
Để bắt đầu một hoạt động bạn cần một đối tượng Ý định .
Một đối tượng có ý định lấy hai tham số trong hàm tạo của nó
Thí dụ:
Vì vậy, ví dụ, nếu bạn có hai hoạt động, nói HomeActivity
và DetailActivity
và bạn muốn bắt đầu DetailActivity
từ HomeActivity
(HomeActivity -> DetailActivity).
Đây là đoạn mã cho biết cách bắt đầu Chi tiết từ
Trang chủ Hoạt động.
Intent i = new Intent(HomeActivity.this,DetailActivity.class);
startActivity(i);
Và bạn đã hoàn thành.
Quay trở lại nút bấm một phần.
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);
}
});
Bắt đầu một hoạt động khác từ hoạt động này và bạn cũng có thể truyền tham số qua Bundle Object.
Intent intent = new Intent(getBaseContext(), YourActivity.class);
intent.putExtra("USER_NAME", "xyz@gmail.com");
startActivity(intent);
Lấy lại dữ liệu trong một hoạt động khác (YourActivity)
String s = getIntent().getStringExtra("USER_NAME");
Triển khai giao diện View.OnClickListener và ghi đè phương thức 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;
}
Mặc dù câu trả lời thích hợp đã được cung cấp nhưng tôi ở đây để tìm kiếm câu trả lời bằng ngôn ngữ Kotlin. Câu hỏi này không phải là về ngôn ngữ cụ thể vì vậy tôi đang thêm mã để hoàn thành nhiệm vụ này bằng ngôn ngữ Kotlin.
Đây là cách bạn làm điều này trong Kotlin cho andorid
testActivityBtn1.setOnClickListener{
val intent = Intent(applicationContext,MainActivity::class.java)
startActivity(intent)
}
Cách đơn giản nhất để mở hoạt động khi nhấp vào nút là:
onclick
chức năng. 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);
}
}
Thứ haiActivity.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 (Chỉ cần thêm khối mã này vào hiện tại)
</activity>
<activity android:name=".SecondActivity">
</activity>
Lấy nút trong xml trước.
<Button
android:id="@+id/pre"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@mipmap/ic_launcher"
android:text="Your Text"
/>
Hãy lắng nghe nút.
pre.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
startActivity(intent);
}
});
Khi nhấp vào nút:
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);
}
});
Để nhận thêm dữ liệu từ NextActivity.class
:
Bundle extra = getIntent().getExtras();
if (extra != null){
String str = (String) extra.get("data"); // get a object
}
Viết mã trong hoạt động đầu tiên của bạ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();
}
});
Trong secondActivity. Class
String name = getIntent().getStringExtra("Key");
Đặt widget nút trong xml như bên dưới
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button"
/>
Sau đó khởi tạo và xử lý người nghe nhấp vào Hoạt động như bên dưới ..
Trong hoạt động Tạo phương thức:
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);
}
});