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

时间:2013-11-18 02:00:09

标签: android

单击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();                  
            }
        }); 

    }
}

2 个答案:

答案 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 1Intent再次启动extras。在附加内容中,您可以提及检测用户点击finish的内容。然后在activity 1 onCreate()中,您可以阅读额外的价值,并了解用户点击之前活动中的finish,您可以根据这些内容进行操作。

希望它有所帮助。

答案 1 :(得分:0)

其他方式。打开Activity3后,您不需要finish() Activity2。

因此,当Activity3调用setResult(RESULT_OK, intent); finish();时,您的程序将重新打开Activity2。

在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

重新显示