关闭Android中的上一个活动

时间:2016-12-09 10:43:28

标签: android android-activity onbackpressed

我是Android的新手并且尝试我的水平。

我正在申请三项活动, 1个登录页面 2.主页 3.注册页面

加载的第一个活动是登录 当用户提供正确的用户名和密码时,我允许主页 在这里我遇到了一个问题,当我点击后退按钮我再次进入登录界面时,不应该发生应用程序必须关闭。

在创建意图和加载家庭活动时我也在使用finish()

我试过onBackPressed()方法,但它对我不起作用

    public void onBackPressed() {
              //      HomeActivity.this.finish();
                      super.onBackPressed();
      }

我的清单文件是

        <?xml version="1.0" encoding="utf-8"?>
        <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.Example.MyProject">
        <application
        android:name=".MyApplication"
        android:allowBackup="true"
        android:hardwareAccelerated="false"
        android:icon="@drawable/abc"
        android:label="@string/app_name_display"
        android:supportsRtl="true"
        android:largeHeap="true"
       android:manageSpaceActivity=".LoginActivity"
       android:theme="@style/AppTheme">
       <activity android:name=".LoginActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <service android:name=".SyncData" >
    </service>
    <activity android:name=".HomeActivity"
        android:screenOrientation="portrait"/>
       <activity android:name=".Registration"  />
       </application>

      </manifest>

4 个答案:

答案 0 :(得分:2)

Intent intent = new Intent(LoginActivity.this, HomeActivity.class);

startActivity(intent);
finish();
到达HomeActivity.java后,

完成()会破坏您的登录活动 而且你不会再次到达LoginActivity

答案 1 :(得分:0)

试试这个..

 private Boolean exit = false;

   @Override
    public void onBackPressed() {
        // TODO Auto-generated method stub
        if (exit) {
            Intent intent = new Intent(Intent.ACTION_MAIN);
            intent.addCategory(Intent.CATEGORY_HOME);
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
            startActivity(intent);
            finish();
        } else {
            Toast.makeText(this, "Tap again to exit.", Toast.LENGTH_SHORT)
                    .show();
            exit = true;

    }
}

答案 2 :(得分:0)

在第二个Activity上覆盖你的onBackPressed,不要调用

super.onBackPressed();

例如,像这样覆盖你的onBackPressed:

@Override
public void onBackPressed() {
//Do something else here, maybe prompt the user if he needs to exit the app.
finishAffinity();;//If you want to close the application.
}

我会添加这样的东西,以方便用户使用

@Override
public void onBackPressed() {
android.support.v7.app.AlertDialog.Builder alertDialogBuilder = new android.support.v7.app.AlertDialog.Builder(this);
        alertDialogBuilder.setMessage("Do you wish to exit the app?");

        alertDialogBuilder.setPositiveButton("No", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int arg1) {
                dialog.dismiss();
            }
        });

        alertDialogBuilder.setNegativeButton("Yes", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                finishAffinity();
            }
        });

        android.support.v7.app.AlertDialog alertDialog = alertDialogBuilder.create();
        alertDialog.show();
    }

答案 3 :(得分:0)

另一位被this nasty long-standing Android bug咬伤的用户。

如果软件开发人员试图解决这个问题所花费的每小时一美元,我就不用再工作了。

Google:修复它!