![](/img/trans.png)
[英]how to show the SettingsActivity when pressing on 'Settings' button ?
[英]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.