簡體   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