use*_*452 11 android preferenceactivity android-actionbar
这是我的偏好活动:
package com.example.hms.test;
import android.os.Bundle;
import android.preference.PreferenceActivity;
public class PrefsActivity extends PreferenceActivity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.prefs);
}
}
Run Code Online (Sandbox Code Playgroud)
在这里,我想显示一个带有名称设置的操作栏和一个回到主页的后退按钮
Poo*_*oya 20
你应该做几件事:
将以下内容添加到onCreate of PreferenceActivity:
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
Run Code Online (Sandbox Code Playgroud)覆盖PreferenceActivity中的onOptionsItemSelected:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId())
{
case android.R.id.home:
NavUtils.navigateUpFromSameTask(this);
return true;
}
return super.onOptionsItemSelected(item);
}
Run Code Online (Sandbox Code Playgroud)将<activity>清单中的标记更改为PreferenceActivity,如下所示:
<activity
android:name=".PrefsActivity"
android:label="@string/title_activity_settings"
android:parentActivityName=".MainActivity">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.example.android.MainActivity" />
</activity>
Run Code Online (Sandbox Code Playgroud)最后<activity>在清单中的MainActivity 标记中放入android:launchMode ="singleTop" :
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:launchMode="singleTop"
android:theme="@style/AppTheme.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)Bal*_*eep 10
Pooya给出的答案不适用于PreferenceActivity.而是让您的类扩展AppCompatActivity,并使用PreferenceFragment加载首选项.这是我的设置代码:
public class MyPrefsActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getFragmentManager().beginTransaction().replace(android.R.id.content, new MyPreferenceFragment()).commit();
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
@Override
public boolean onSupportNavigateUp(){
finish();
return true;
}
public static class MyPreferenceFragment extends PreferenceFragment {
@Override
public void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
}
}
}
Run Code Online (Sandbox Code Playgroud)
将活动放在AndroidManifest.XML中:
<activity android:name=".MyPrefsActivity"
android:label="Preferences"
android:theme="@style/AppTheme"/>
Run Code Online (Sandbox Code Playgroud)
现在,您可以使用我的主要活动中的意图(或您拥有的任何父活动)开始设置活动:
Intent prefsIntent = new Intent(activity, MyPrefsActivity.class);
activity.startActivity(prefsIntent);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9073 次 |
| 最近记录: |