3

シンプルな画面と「開始」ボタンで始まるAndroidアプリがあります。ユーザーがボタンをクリックすると、URL からコードが取得され、リストに入れられます。リストビューから戻ると、「開始」ボタンのある画面ではなく、空白の画面が表示されます。すべてのコードは onCreate ステートメントにあります。これが私の最初の本当の Android アプリであることが明らかでない場合は、申し訳ありません (Hello Android チュートリアルは別として)。それが役立つ場合、以下は最初のアクティビティのコードです。

public class Main extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    Button next = (Button) findViewById(R.id.butQR);
    next.setOnClickListener(new View.OnClickListener() {
        public void onClick(View view) {
            setContentView(R.layout.listplaceholder);
            Intent myIntent = new Intent(view.getContext(), NewListActivity.class);
            myIntent.putExtra("race_id", view.getId());
            myIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
            myIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            startActivity(myIntent);
        }

    });
}

更新: setContentView(R.layout.listplaceholder); を使用しています。ボタンのクリック時および次のアクティビティの新しい oncreate で。助けてくれてありがとう。

4

2 に答える 2

2

サブアクティビティ用に新しいタスクを作成するべきではありません。また、タスク スタックの一番上をクリアする理由もありません。ユーザーが戻ったときに開始アクティビティを表示したくない場合はfinish()、新しいアクティビティを開始した後に単純に表示できます。

于 2012-05-28T18:48:36.107 に答える
1

あなたが言及したことから、インテントフラグは必要ないようです。フラグを設定するFLAG_ACTIVITY_CLEAR_TOPと、起動されるアクティビティが既に実行されている場合、その上にある他のすべてのアクティビティが閉じられ、呼び出されている (既に実行されていてスタック内にある) アクティビティが最上位になります。ここで、戻るボタンを押すと、これより前に実行されていたアクティビティに移動するはずですが、そのフラグのために Main アクティビティが閉じられたため、空白の画面が表示されます。

于 2012-05-28T19:05:38.153 に答える