1

作業中のアプリがついに完成しました。バスケットボールのスコアボードアプリです。期待どおりに機能しますが、開発段階ですべての変数をハードコーディングしました。これは私にとっては問題ありませんが、このアプリが他の人にとって役立つ場合は、いくつかの変数を変更できる必要があります。

これを行うための最良の方法は、オプションメニューを使用することです。ユーザーがメニューの[設定]オプションをクリックすると、画面にメニューが表示されます。SettingsActivityという新しいアクティビティを作成し、startActivity(R.layout.settings)メソッドを使用してこのXMLレイアウトを表示することができました。しかし、デバイスの[戻る]ボタンをクリックすると、プログラムが終了します。

私はいくつかのことに興味があります...私の理解では、startActivity()メソッドを使用すると、基本的に現在のアクティビティが消去され、新しいアクティビティに移動します。ただし、ありそうもない状況で、ユーザーがゲームの途中でこれを行う場合、私はそれがすべてを一掃することはしません。ユーザーが[戻る]ボタンを押したときから中断したところから続行する必要があります。

これを達成するにはどうすればよいですか?

4

2 に答える 2

1

「設定」アクティビティは、それほど複雑ではないと仮定すると、通常のアクティビティではなく、PreferenceActivity(http://developer.android.com/reference/android/preference/PreferenceActivity.html)として使用する必要があります。それは本当にあなたの好みの画面が何を伴うかに依存します。

public class Prefs extends PreferenceActivity{

 @Override
 public void onCreate(Bundle savedInstanceState){
     super.onCreate(savedInstanceState);
     addPreferencesFromResource(R.xml.preferences);
 }
}

res / menuフォルダー内に、ユーザーがメニューボタンを押したときに表示されるものに対応するmenu.xmlを含めることができます。

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:id="@+id/miPrefs" android:title="Preferences" android:icon="@android:drawable/ic_menu_preferences"></item>
</menu>

次に、これをメインアクティビティに結び付けることができます。

@Override
public boolean onCreateOptionsMenu(Menu menu){
  getMenuInflater().inflate(R.menu.menu,menu);
  return true; 
}

次に、最後に、メインアクティビティ内で、次を追加できます。

@Override
public boolean onMenuItemSelected(int featureId, MenuItem item){
  switch(item.getItemId()){
  case R.id.miPrefs:
    startActivity(new Intent().setClass(this,Prefs.class));
    break;
  }
}

この手順全体で、PreferenceActivityを開くことができ(メインアクティビティの上に開きます)、戻ったら、変更されていないMainActivityに戻ります。

これが探しているアプローチでない場合は、onSaveInstanceStateを使用して実行し、savedInstanceState!=nullのときにonCreateで復元する必要があります。

于 2012-12-30T04:41:36.960 に答える
0

まず、XMLレイアウトではなく、新しいクラス/新しいアクティビティを指すインテントでstartActivityを使用していると仮定します。一部のデータを保存する場合は、onpauseメソッドでsharedpreferencesを使用します。これは、onresumeをリロードできますが、メモリが不足している場合は、ユーザーまたはAndroidによって閉じられない限りそのままにしておく必要があります。

于 2012-12-30T00:19:31.180 に答える