繁体   English   中英

按下设置按钮后,我的偏好设置没有显示

[英]My preferences does not show up after pressing settings button

因此,我目前正在尝试编辑android api提供的Snake游戏。 我正在尝试使其按菜单->设置->恢复后,将恢复游戏。 但是,在我按设置后,它并没有一路恢复,而是退出并从那里恢复。 我正在使用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;
    }

您在显式地调用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),您可能需要调查一下。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM