从菜单项开始列表偏好(片段)



我正试图从菜单项启动一个偏好片段,我遇到了一些麻烦。我遵循了一个关于如何制作listPreference的教程,然后将其调整到我的项目中,但它会使应用程序崩溃。

这个条目是连接到prefFrag的起始点:

<item
                android:id="@+id/action_settings"
                android:orderInCategory="100"
                android:showAsAction="never"
                android:title="@string/settings"
                android:onClick="prefStartup"/>
下面是在主活动中启动intent的代码:
public void prefStartup(MenuItem item){
    Intent intentSetPref = new Intent(getApplicationContext(), PrefActivity.class);
    startActivityForResult(intentSetPref, 0);
}
下面是帮助显示片段的两个类(直接来自教程):
public class PrefActivity extends Activity {
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  PrefFragment prefFragment = new PrefFragment();
  FragmentManager fragmentManager = getFragmentManager();
  FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
  fragmentTransaction.replace(android.R.id.content, prefFragment);
  fragmentTransaction.commit();
 } 
}
public class PrefFragment extends PreferenceFragment {
 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  addPreferencesFromResource(R.xml.preference);
 } 
}

我真的不知道为什么它会打破,如果这些东西是直接从教程。在本教程中,他们只是通过常规按钮而不是菜单项来启动它。

不久以前,我和你一样学习了同样的教程,也遇到了同样的问题。

在你的主活动中试试下面的方法,而不是使用你的prestartup()。

   //Method for creating options menu
   @Override
    public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
    }
   //Method for handling options menu selection
   @Override
   public boolean onOptionsItemSelected(MenuItem item) {
   switch (item.getItemId()) {
    // action with ID action_settings was selected
    case R.id.action_settings:
   Intent intentSetPref = new Intent(getApplicationContext(), PrefActivity.class);
    startActivityForResult(intentSetPref, 0);
      break;
    default:
      break;
    }
    return true;
  } 

你可以从你的菜单xml中删除android:onClick="prefStartup"

最新更新