【问题标题】:Clicking 'back' on Android action bar exits app在 Android 操作栏上单击“返回”会退出应用程序
【发布时间】:2014-04-13 22:48:07
【问题描述】:

我正在尝试将“返回”按钮合并到操作栏中。在初始化第一个活动并单击第二个活动时,一切正常。但是在单击操作栏上的“返回”按钮时,应用程序会在没有错误的情况下退出应用程序,而不是返回到主/父活动。

如何让它回到主/父活动?

   SecondActivity.java
    import android.os.Bundle;
    import android.app.ActionBar;
    import android.app.Activity;
    import android.support.v4.app.NavUtils;
    import android.view.Menu;
    import android.view.MenuItem;

public class SecondActivity extends Activity {

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

        ///as part of back action on action bar, not sure if it works
            getActionBar().setDisplayHomeAsUpEnabled(true);
    }



    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if          it is present.
        getMenuInflater().inflate(R.menu.SecondActivity, menu);
        return true;
    }

      @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            switch (item.getItemId()) {
            case android.R.id.home:
             ///replaced NavUtils.navigateUpFromSameTask(this); 
                       finish();
                return true;
            }
                return super.onOptionsItemSelected(item);

        }

}

在清单文件中,

          <?xml version="1.0" encoding="utf-8"?>
       <manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.backbuttontry"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
    android:minSdkVersion="11"
    android:targetSdkVersion="18" />

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@android:style/Theme.Holo.Light" 
    android:debuggable="true"  >



     <activity
        android:name="com.example.backbuttontry.MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity

      android:name="com.example.backbuttontry.SecondActivity"
        android:label="@string/app_name" >
       android:parentActivityName="com.example.backbuttontry.MainActivity" >

       <meta-data

      android:name="android.support.PARENT_ACTIVITY"

      android:value="com.example.backbuttontry.MainActivity" />
     </activity>

      </application>

      </manifest>

我是 android 新手,正在尝试新事物。将不胜感激我能得到的任何建议/帮助。谢谢。

下面的logcat就不多说了

    04-10 00:23:38.444: W/EGL_emulation(704): eglSurfaceAttrib not implemented
    04-10 00:23:40.953: W/EGL_emulation(704): eglSurfaceAttrib not implemented

【问题讨论】:

    标签: android android-actionbar


    【解决方案1】:

    试试这个

    Intent upIntent = new Intent(this, your_class.class);
            if(NavUtils.shouldUpRecreateTask(this, upIntent)){
                TaskStackBuilder.from(this)
                        .addNextIntent(upIntent)
                        .startActivities();
                finish();
    

    不是这个

     NavUtils.navigateUpFromSameTask(this);
    

    编辑:

    更简单的解决方案,只需完成如下所示的活动。

    更改以下内容。从此

                case android.R.id.home:
                NavUtils.navigateUpFromSameTask(this);
                return true;
    

    到这里

                case android.R.id.home:
                finish();
                return true;
    

    【讨论】:

    • 我已经按照您的要求替换了代码行并导入了意图等。但是 Eclipse 说第 3 行中的 'from' 存在问题,'TaskStackBuilder.from(this)。 ...'未定义类型 TaskStackBuilder 的方法 from(Rl)'
    • 按照您的建议尝试替换“NavUtils.navigateUpFromSameTask(this);”用“完成();”但同样的事情也会发生。无论我点击操作栏中的“后退”还是物理后退按钮,它都会退出第二个活动。这让我发疯了。
    • 我知道如果点击操作栏的“后退”按钮不起作用,但为什么即使在物理后退按钮上它也会退出应用程序?
    • 我猜你正在模拟器中运行这个应用程序!!。可能是应用程序做了太多工作,这就是它停止活动的原因。只是一个猜测。我会创建另一个项目,然后尝试实施相同的项目。
    【解决方案2】:

    只需在 Android Manifest 文件的 Activity 标记中声明此代码即可。

    例如:

    <activity android:name=".SecondActivity"
                android:parentActivityName=".MainActivity"></activity>
    

    它会解决你的问题。

    【讨论】:

    • 感谢您的帮助,但同样的事情再次发生。单击操作栏中的“
    猜你喜欢
    • 1970-01-01
    • 2012-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多