0

私の問題は単純に思えますが、ここで答えを見つけることができません。

1 つのアプリケーションでさまざまなアクティビティがあります。活動はお互いに始まります。利用可能なすべてのレベルを表示する「メイン画面」があり、ユーザーがレベルをクリックすると、そのアクティビティが開始されます。ユーザーがそのレベルを終了すると、戻るボタンを押してメイン画面に移動し、別のレベルを開始できますレベル。戻るボタンを押すと、もう一度「メイン画面」を再描画したいと思います。今回は、完了したレベルの親指が異なって完了したことを示すためです。

では、戻るボタンが押されたときにアクティビティで再描画を実行するにはどうすればよいですか? (Activity.onResume メソッドにコードを追加する必要があると思います) (完成したレベルの状態を保存するために SharedPreferences を使用します)

メイン画面のアクティビティは基本的に次のとおりです。

    /** アクティビティが最初に作成されたときに呼び出されます。*/
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.maps);

SharedPreferences settings = getSharedPreferences((getResources().getString(R.string.PREFS_HI)),0); /**/ GridView gridview = (GridView) findViewById(R.id.gridview); gridview.setAdapter(new ImageAdapter(this,(settings.getBoolean("level_1_finished", false)))); /**/ gridview.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View v, int position, long id) { //Open the map which was clicked on, if there is one if(position+1 > 1){ Toast.makeText(maps.this, "Level " + (position+1) + " is not yet available!", Toast.LENGTH_SHORT).show(); }else{ Toast.makeText(maps.this, "Opening Level " + (position+1), Toast.LENGTH_SHORT).show(); Intent myIntent = new Intent(v.getContext(), Tutorial2D.class); startActivity(myIntent); } } }); }

次に、ImageAdapter はブール値の true/false を使用して、画像のソース (未完成のつまみまたは完成したレベルのつまみ) を選択します。

4

2 に答える 2

0

まず、GridViewオブジェクトをクラスメンバーとして配置します。onResume()次に、ユーザーの操作に基づいてグリッドビューアダプターを再設定できる方法をオーバーライドします。

private GridView gridview;
@Override
protected void onResume() {
    super.onResume();
    gridview.setAdapter(/* your new ImageAdapter here */);
}
于 2011-01-16T11:20:35.060 に答える
0

ActivitystartActivityForResult()のメソッドを使用する必要があります。基本的に、次のアクティビティを開始し、終了時にリクエストのステータスを尋ねます。完了する直前に setResult を呼び出す必要があります (ユーザーがレベルを完了したかどうかを指定できます)。それを呼び出したアクティビティ (メイン画面) には、そのメソッドが呼び出されます。この方法では、必要に応じてビューを更新できます。onActivityResult()

于 2011-01-16T09:34:55.740 に答える