Android 如何知道用户在多个活动中单击btnFinish按钮?
当单击activity1中的“下一步”按钮时,activity1将打开activity2。Android 如何知道用户在多个活动中单击btnFinish按钮?,android,Android,当单击activity1中的“下一步”按钮时,activity1将打开activity2。 “活动2”打开“活动3”,并在“活动2”中单击“下一步”按钮时关闭。 单击“完成”或“取消”按钮时,活动3将关闭 我想当activity3关闭时会显示activity1。我希望activity1在用户单击activity3中的BTNFish按钮时做些什么,我如何知道用户单击activity3中的BTNFish按钮 public class activity1 extends Activity{
“活动2”打开“活动3”,并在“活动2”中单击“下一步”按钮时关闭。
单击“完成”或“取消”按钮时,活动3将关闭 我想当activity3关闭时会显示activity1。我希望activity1在用户单击activity3中的BTNFish按钮时做些什么,我如何知道用户单击activity3中的BTNFish按钮
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();
}
});
}
}
方法1:
您可以使用向项目中的类发送本地广播。在活动1
中,您可以在开始活动2
后立即开始播放列表。然后,当用户单击活动3
上的finish
按钮时,您可以在完成该活动之前发送本地广播。您可以活动1
接收它,然后根据广播,您可以在活动1
中进行一些操作
阅读下面的答案,了解如何使用它
方法2:您可以在开始活动2
后立即完成活动1
。然后,当用户从第三个活动中单击“完成”时,您可以使用Intent
和extras
再次开始活动1
。在附加内容中,您可以提到一些内容,以检测用户是否单击了finish
。然后在活动1
onCreate()
中,您可以读取额外的值,并了解用户在上一个活动中单击完成
,您可以基于此进行操作
希望能有帮助 另一种方式。在打开Activity3之后,不需要
finish()
Activity2
因此,当Activity3调用setResult(RESULT\u OK,intent)时代码>finish()代码>,您的程序将重新打开活动2
在Activity2中,必须重写ActivityResult()上的方法
@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中,您将在ActivityResult()中收到结果,作为Activity2,顺便问一下,thanhnh的方法好吗?我想它会引起屏幕的轰动。由于Activity2保持打开状态,当您关闭Activity3时,Activity2将先打开然后关闭,我可以在Android 2.3.6中使用LocalBroadCastManager吗?您可以使用它。虽然不确定,但对于较低版本,您可能需要android的v4支持库。你得检查一下你能看看吗?谢谢@用户828896在那里回答。希望现在更清楚。