1

我的应用程序中有两个活动。我想执行一个简单的功能。在第二个活动中,如果单击按钮,它应该隐藏并返回到第一个活动,如果我单击第一个活动中的按钮,第二个活动应该以隐藏按钮打开。我通过下面的代码实现了这一点。

但问题是。当我在第一个活动中按下后退按钮时,我无法关闭(调用onDestroy() )应用程序。后退按钮执行两个活动之间的切换。

第一个活动Java:

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class first extends AppCompatActivity {

    Button btn1;

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

        btn1 = (Button) findViewById(R.id.btn1);

        btn1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {


                Intent intent = new Intent(first.this, second.class);
                startActivity(intent);


            }
        });
    }
    public void onBackPressed() {
        super.onBackPressed();
    }
}

第二个活动Java:

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class second extends AppCompatActivity {

    Button btn2;   

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


        onBackPressed();
        btn2 = (Button) findViewById(R.id.btn2);

        btn2.setOnClickListener(new View.OnClickListener() {


            @Override
            public void onClick(View v) {

                btn2.setVisibility(View.GONE);
                Intent intent = new Intent(second.this, first.class);
                intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
                startActivity(intent);

            }
        });
    }

    public void onBackPressed() {
        intent = new Intent(second.this, first.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
        startActivity(intent);
    }
}

在这种情况下如何调用OnDestroy()

4

3 回答 3

0

finish()从后按事件调用 。覆盖 backpressed 事件,以便您可以自定义它。

@Override
public void onBackPressed() {
        finish();
        //super.onBackPressed();
    }
}
于 2017-08-27T22:44:44.100 回答
0

原因是您在第二个活动中覆盖 onBackPressed() 。因此,这意味着每次您在第二个活动上按下后退按钮时,它都会创建一个新的第一个活动,而不是返回旧活动。该应用程序将陷入此循环。尝试在第二个活动上删除 onBackPressed 方法或在其中调用 finish() 。

于 2017-08-27T22:32:42.840 回答
0

您可以onBackPress()在第一个活动中使用这种方法

@Override
 public void onBackPressed() {
      //super.onBackPressed();
      finish();
 }

或者

您可以删除onBackPress(),因为您不必覆盖它。

于 2017-08-27T23:15:30.823 回答