安卓 - 如何在按钮点击时关闭一个活动?

21

我想通过按钮点击关闭一个Activity。我对意图(intents)不熟悉,有些困惑。这是一个跟踪生命周期的ActivityOne
当按钮按下时,它会打开ActivityTwo并将ActivityOne放在后台。
我在onClickListener中使用这个意图时,它运行良好:

Intent myIntent = new Intent(ActivityOne.this, ActivityTwo.class);
ActivityOne.this.startActivity(myIntent);

ActivityTwo中,我需要使用Intent和finish()方法来关闭该活动。我尝试了谷歌搜索,认为下面的代码可能会有用:

Intent myIntent2 = new Intent(getApplicationContext(), ActivityTwo.class);
ActivityTwo.this.finish(myIntent2);

完整代码如下,但并未起作用:

public class ActivityOne extends Activity {

    // ...

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_one);

        // ...

        Button launchActivityTwoButton = (Button) findViewById(R.id.bLaunchActivityTwo); 
        launchActivityTwoButton.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO:
                // Launch Activity Two
                // Hint: use Context's startActivity() method

                // Create an intent stating which Activity you would like to start
                Intent myIntent = new Intent(ActivityOne.this, ActivityTwo.class);

                // Launch the Activity using the intent
                ActivityOne.this.startActivity(myIntent);               
            }
        });

        // ...
    }
}

活动2:

public class ActivityTwo extends Activity {    

    // ...

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_two);

        // ...

        Button closeButton = (Button) findViewById(R.id.bClose); 
        closeButton.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {

                // TODO:
                // This function closes Activity Two
                // Hint: use Context's finish() method
                Intent myIntent2 = new Intent(getApplicationContext(), ActivityTwo.class);
                ActivityTwo.this.finish(myIntent2);
            }
        });
        // ...
    }
}

按下返回按钮将关闭您的活动。 - Raghunandan
1
当然,按下返回按钮会关闭它,但这不是问题的关键! :) - Castiblanco
对于ActivityOne,我只需输入 startActivity(intent); 就可以了,不需要输入 className.this.startActivity(intent);。如果有人知道我需要像提问者那样写出来的原因,请随时提供意见。 - JesseBoyd
5个回答

53

当点击按钮时,您想关闭ActivityTwo吗?只需使用finish();

ActivityTwo中用于按钮监听器的完整代码如下:

Button closeButton = (Button) findViewById(R.id.bClose); 
closeButton.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {

        // TODO:
        // This function closes Activity Two
        // Hint: use Context's finish() method
        finish();
    }
});

7

你想要结束activityTwo吗,@Arjun Krishnan?

试试这个:

 ActivityTwo.this.finish();

这会对你有所帮助


4

最好的方法来结束当前活动是使用finish()方法。所以在ActivityTwo中,您可以在按钮的onClick()中执行此操作。

closeButton.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            finish();
            //closes ActivityTwo
        }
});

不需要创建新的意图来完成当前活动。同时注意,按下返回键也会结束您的活动。


2

将这两行代码

Intent myIntent2=new Intent(getApplicationContext(),ActivityTwo.class); ActivityTwo.this.finish(myIntent2);

替换为这一行代码 ActivityTwo.this.finish();


1
Button exit= (Button) findViewById(R.id.yes);
exit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                MainActivity.this.finish();
            }
        });

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接