Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/192.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何知道用户在多个活动中单击btnFinish按钮?_Android - Fatal编程技术网

Android 如何知道用户在多个活动中单击btnFinish按钮?

Android 如何知道用户在多个活动中单击btnFinish按钮?,android,Android,当单击activity1中的“下一步”按钮时,activity1将打开activity2。 “活动2”打开“活动3”,并在“活动2”中单击“下一步”按钮时关闭。 单击“完成”或“取消”按钮时,活动3将关闭 我想当activity3关闭时会显示activity1。我希望activity1在用户单击activity3中的BTNFish按钮时做些什么,我如何知道用户单击activity3中的BTNFish按钮 public class activity1 extends Activity{

当单击activity1中的“下一步”按钮时,activity1将打开activity2。
“活动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在那里回答。希望现在更清楚。