按下设置按钮后,我的首选项不会显示

时间:2013-01-27 21:20:52

标签: android android-preferences

所以,我正在尝试编辑android的api提供的Snake游戏。我试图这样做,以便在按下menu-> settings-> resume之后,它将恢复游戏。但是,在我按下设置后,它不会一直恢复,而是从那里退出并恢复。我正在使用Intents来恢复该程序。

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;
    }

1 个答案:

答案 0 :(得分:0)

你明确地调用了在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();
    }
  });
}

此外,根据您的代码onOptionsSelected()没有明确暂停游戏(但是考虑到onPause()将被调用,UI应该暂停),您可能需要查看它。