单击activity1中的btnNext按钮时,activity1打开activity2 activity2 open activity3将在activity2中单击btnNext按钮时关闭 单击btnFinish或btnCancel按钮时,activity3将关闭。
我认为当activity3关闭时会显示activity1。我希望activity1在activity3中单击btnFinish按钮时执行某些操作,如何知道用户在activity3中单击btnFinish按钮?
public class activity1 extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity1);
Button btnNext = (Button) findViewById(R.id.btnNext);
btnNext.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent().setClass(getApplicationContext(),
ui.activity2.class);
startActivityForResult(intent, 20);
}
});
}
}
public class activity2 extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity2);
Button btnNext = (Button) findViewById(R.id.btnNext);
btnNext.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent().setClass(getApplicationContext(),
ui.activity2.class);
startActivityForResult(intent, 30);
finish();
}
});
}
}
public class activity3 extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity3);
Button btnFinish = (Button) findViewById(R.id.btnFinish);
btnbtnFinish.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent();
intent.putExtra("smsid", id);
setResult(RESULT_OK, intent);
finish();
}
});
Button btnCancel = (Button) findViewById(R.id.btnCancel);
btnCancel.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
finish();
}
});
}
}
答案 0 :(得分:1)
方法1:
您可以使用LocalBroadCastManager将本地广播发送到项目中的类。在Activity 1
内,您可以在开始activity 2
后立即开始列出广播。然后,当用户点击finish
上的activity 3
按钮时,您可以在完成该活动之前发送本地广播。您activity 1
收到它并根据广播,您可以activity 1
中的某些内容。
阅读how to use LocalBroadcastManager?上的答案,了解如何使用它。
方法2 :您可以在启动activity1
后立即完成activity 2
。然后,当您从第3个活动开始,用户点击finish
,然后您可以使用activity 1
和Intent
再次启动extras
。在附加内容中,您可以提及检测用户点击finish
的内容。然后在activity 1
onCreate()
中,您可以阅读额外的价值,并了解用户点击之前活动中的finish
,您可以根据这些内容进行操作。
希望它有所帮助。
答案 1 :(得分:0)
其他方式。打开Activity3后,您不需要finish()
Activity2。
因此,当Activity3调用setResult(RESULT_OK, intent);
finish();
时,您的程序将重新打开Activity2。
onActivityResult()
方法
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 30) {
if (resultCode == RESULT_OK) {
setResult(RESULT_OK, intent);
finish();///---> finish the activity 2 and go back the activity 1
}
}
}
在Activity1中,您将在onActivityResult()
中将结果作为Activity2