2015-10-28 35 views
1

我有一个PreferenceActivity。我正在寻找一种方法来添加带有箭头“GoBack”的ActionBar。到目前为止,我发现的所有例子在我看来都过于复杂,因为如果我有一个简单的活动,我可以用一行java代码将ActionBar添加到它,那就是了。将带有箭头“GoBack”的ActionBar添加到PreferenceActivity?

我想知道,是不是有一种简单的方法添加带有箭头“GoBack”的ActionBar到PreferenceActivity?

UPDATE:

我更喜欢这个活动:

public class PreferenceActivity123 extends PreferenceActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     getFragmentManager().beginTransaction().replace(android.R.id.content, new MainPreferenceFragment()).commit(); 
    } 

    public static class MainPreferenceFragment extends PreferenceFragment { 
     @Override 
     public void onCreate(final Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      addPreferencesFromResource(R.xml.preferences); 
     } 
    } 
} 

回答

1
// Add this in your androidmanifest.xml file 
    <activity 
       android:name=".SecondActivity" 
       android:label="@string/app_name" 
       android:parentActivityName=".MainActivity"> 

       <meta-data 
        android:name="android.support.PARENT_ACTIVITY" 
        android:value=".MainActivity" /> 
      </activity> 
+0

写入当前活动的名称而不是SecondActivity。 –

+0

什么是SecondActivity,它是MyPreferencesActivity? –

+0

第二个活动是您当前的活动名称,mainActivity是您的根活动名称, –

1

你必须设置DisplayHomeasUpEnabled在你的动作条的活动像

getSupportActionBar().setDisplayHomeAsUpEnabled(true);//Which will show back button 

定义在AndroidManifest.xml父活动活动(PreferenceActivity)将在后退按钮中被调用操作栏被按下。

在你的清单定义,添加一行:

<activity 
    android:parentActivityName="com.example.activities.PreferenceActivity" 
    </activity> 

或 只听的optionItemSelected方法

@Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     switch (item.getItemId()) { 
      case android.R.id.home: 
       Intent intent = new Intent(this, PreferenceActivity.class); 
       intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
       startActivity(intent); 
       return true; 
      default: 
       return super.onOptionsItemSelected(item); 
     } 
    } 

编辑: 为了实现优先活动同您需要在styles.xml中使用后退按钮制作自定义操作栏样式

<?xml version="1.0" encoding="utf-8"?> 
<resources>  
    <style name="PrefTheme" parent="@android:style/Theme.Holo.Light"> 
    <item name="android:actionBarStyle">@style/PrefActionBar</item> 
    </style> 

    <style name="PrefActionBar" parent="@android:style/Widget.Holo.ActionBar"> 
    <item name="android:displayOptions">showHome|homeAsUp|showTitle</item> 
    </style> 
</resources> 

在电话清单一样风格:

<application android:theme="@style/PrefTheme"> 

呼叫在活动操作栏中

getActionBar().setDisplayHomeAsUpEnabled(true); 
+0

getSupportActionBar() - 未找到方法。 –

+0

如果您正在扩展[ActionBarActivity](http://developer.android.com/reference/android/support/v7/app/ActionBarActivity.html),那么您可以获得该方法。哪个支持你使用的sdk版本? –

+0

为什么我会扩展它,如果我采取有关PreferenceActivity?我已经更新了我的问题。 –

1

只需使用android.support.v7.widget.Toolbar

public class SettingsActivity extends PreferenceActivity { 
     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_settings);  

Toolbar actionbar = (Toolbar) findViewById(R.id.actionbar); 
     actionbar.setTitle("Settings"); 
     actionbar.setNavigationIcon(getResources().getDrawable(R.drawable.ic_action_back)); 
     actionbar.setNavigationOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       YourActivity.this.finish(); 
      } 
     }); 

     } 
    } 

和你activity_settings.xml文件

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       xmlns:tools="http://schemas.android.com/tools" 
       tools:context=".SettingsActivity" 
       tools:menu="settings" 
       tools:actionBarNavMode="standard" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:orientation="vertical"> 

    <android.support.v7.widget.Toolbar 
    android:id="@+id/actionbar" 
    android:layout_height="wrap_content" 
    android:layout_width="match_parent" 
    android:minHeight="?attr/actionBarSize" 
    android:background="?attr/colorPrimaryDark" 
    /> 

    <FrameLayout 
     android:id="@id/content" 
     android:orientation="vertical"  
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 
</LinearLayout> 
+0

我应该在哪里放入? –

+0

R.id.actionbar - 未找到。 –

+0

@jawanam,我更新了我的回答 –