如何关闭Android活动并返回上一个/主要活动?

时间:2014-01-23 21:22:04

标签: android layout android-activity

我正在尝试使用Intent来开启java.class活动来理解教程。我可以设法使用以下代码打开活动:

    Intent in = new Intent(MainActivity.this, settingmenu.class);

    startActivity(in);
    setResult(Activity.RESULT_OK);
    finish();

在该活动中,我计划在设置中使用edittexts,但首先我想了解如何简单地返回到上一个活动。我的按钮的onClick方法使用以下方法:

public void cancel()
{
    this.finish();
    return;
}

然而,当按下按钮时,应用程序崩溃。我的做法有何不同?有几个教程说使用finish(),但我感觉不对。

4 个答案:

答案 0 :(得分:2)

  

我想了解如何简单地返回上一个活动

请勿在您的第一个finish()中致电Activity。然后,当用户按下“后退”按钮时,第二个Activity将被关闭并从堆栈中取出,并且将调用第一个onResum()的{​​{1}}。

Activity

就崩溃而言,您需要提供logcat以及可能更多的代码

您可能希望阅读有关the Stack的内容,这将有助于了解 Intent in = new Intent(MainActivity.this, settingmenu.class); startActivity(in); setResult(Activity.RESULT_OK); // finish(); don't call this and the Activity will remain on the stack 如何放置和弹出。此外,还有一个非常好的话题,我相信Romain Guy在一个较旧的Google I / O会议上就此问题非常有帮助。我会尝试发布,但你可以谷歌这些条款,你会发现它。

Activity Docs

Google I/O Navigation and stack不是我认为的那样,但绝对值得一看。

答案 1 :(得分:0)

当你使用“完成”时,你只是破坏活动而它不会在堆栈中,如果你想要去往前一个活动,你需要使用另一个意图来开始活动,或者不要使用“完成” “意图之后。

答案 2 :(得分:0)

为了解决我的问题,我摆脱了android:onClick =“save()”,而在我的第二个活动中在onCreate方法中创建了一个onclicklistener。测试它,它工作。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    this.requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.settingmenu);

    Button tt = (Button)findViewById(R.id.savebutton);
    tt.setOnClickListener(new View.OnClickListener() { 
        @Override
        public void onClick(View v) {
                finish();

        }
    });

答案 3 :(得分:0)

btnBack.setOnClickListener(new OnClickListener(){private void onClick(){
Intent intent = new Intent(currentActivity.this, Main.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);   
startActivity(intent);}});