ActionBar中的Home Up按钮不起作用

时间:2013-12-23 16:48:37

标签: java android xml

ActionBar中的Home Up按钮出现问题。我在PreferenceActivity并在onCreate我输入了以下代码:

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
        getActionBar().setDisplayHomeAsUpEnabled(true);
    }

当我运行我的应用程序时,它会显示向上按钮但是当我点击它时没有任何反应。所以我将此代码放在AndroidManifest

    <activity android:name="com.example.mypackage.SystemInfo">
      <meta-data
        android:name="android.support.PARENT_ACTIVITY"
        android:value="com.simonedev.androtools.MainActivity" />
    </activity>

但我仍有同样的问题。我该如何解决? 问题在哪里?

2 个答案:

答案 0 :(得分:5)

错误的方式

你不应该使用

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    super.onOptionsItemSelected(item);
    switch(item.getItemId()) {
        case android.R.id.home:
        //Do not use the following
        //PreferenceActivity.this.onBackPressed(); 
        //or
        //finish();
        break;
    }
    return true;   
}

正确的方式

但请关注this presentationgoogle guidelines

Manifest应该再添加1个属性

<activity android:name="com.example.mypackage.SystemInfo"
    android:parentActivityName="com.simonedev.androtools.MainActivity" >
  <meta-data
    android:name="android.support.PARENT_ACTIVITY"
    android:value="com.simonedev.androtools.MainActivity" />
</activity>

来自the presentation的复制代码:这将是一个简单的案例

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

我邀请您阅读整个presentation了解其他更复杂的案例

答案 1 :(得分:-2)

在您的课程中添加此方法,但在onCreate()方法

之外
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.action_bar, menu);
setTitle("");
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
 super.onOptionsItemSelected(item);
 switch(item.getItemId())
 {

case android.R.id.home:
PreferenceActivity.this.onBackPressed(); 
break;


 }
 return true;   
 }

现在,在您的评论之后。您可能必须在res / menu文件夹中创建一个名为action_bar.xml的文件,并将以下内容添加到其中

 <menu xmlns:android="http://schemas.android.com/apk/res/android">
 </menu>