Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 按“设置”按钮后,我的首选项不会显示_Android_Android Preferences - Fatal编程技术网

Android 按“设置”按钮后,我的首选项不会显示

Android 按“设置”按钮后,我的首选项不会显示,android,android-preferences,Android,Android Preferences,所以,我目前正在尝试编辑android的api提供的蛇游戏。我试图使它,以便在按下菜单->设置->恢复,它将恢复游戏。但是,在我按下设置后,它不会一直继续,而是退出并从那里继续。我正在使用意图恢复该程序 public boolean onOptionsSelected(MenuItem menu){ switch(menu.getItemId()){ case R.id.settings: Intent prefActivity = new Intent(

所以,我目前正在尝试编辑android的api提供的蛇游戏。我试图使它,以便在按下菜单->设置->恢复,它将恢复游戏。但是,在我按下设置后,它不会一直继续,而是退出并从那里继续。我正在使用意图恢复该程序

public boolean onOptionsSelected(MenuItem menu){
    switch(menu.getItemId()){
        case R.id.settings:
        Intent prefActivity = new Intent(this,MyPreferences.class);
        startActivityForResult(prefActivity, KEY_RESUME_RESULT);
        return true;
}

public void onActivityResult(int requestCode, int resultCode, Intent data){
    switch(requestCode){
    case KEY_RESUME_RESULT:
        if(resultCode==RESULT_OK){
            if(mSnakeView.getMode() == SnakeView.PAUSE)
                this.mSnakeView.setMode(SnakeView.RUNNING);
        }
    }
}
这在MyPreferences.class中

public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.snake_preferences);
        resume = (Preference)findPreference(getString(R.string.key_resume));
        onPreferenceTreeClick(this.getPreferenceScreen(),resume);
    }

@Override
public boolean onPreferenceTreeClick(PreferenceScreen preferencescreen,Preference preference){
        super.onPreferenceTreeClick(preferencescreen,preference);
        Intent intent = new Intent();
        if(preference == resume){
            setResult(Activity.RESULT_OK,intent);
            finish();
        }
        return true;
    }

您在
onCreate()
中明确地调用了恢复游戏的方法,这可能就是游戏在启动设置后立即恢复的原因。我建议不要使用该方法,而是根据您的喜好设置一个单击侦听器:

public void onCreate(Bundle savedInstanceState){
  super.onCreate(savedInstanceState);
  addPreferencesFromResource(R.xml.snake_preferences);
  resume = (Preference)findPreference(getString(R.string.key_resume));
  resume.setOnPreferenceClickListener (new Preference.OnPreferenceClickListener()
                                         {
    @Override
    public void onPreferenceClick(Preference preference)
    {
      setResult(Activity.RESULT_OK,intent);
      finish();
    }
  });
}
此外,根据您的代码
onoptionselected()
没有明确暂停游戏(但是,考虑到将调用
onPause()
,用户界面应该暂停),您可能需要对此进行研究