1

に表示されるMainActivity Aさまざまなアイテムをユーザーが選択できる があります。これらのアクティビティの間には、スライド遷移があります (左にスライドします) 。Activity BGridViewActivity AActivity B slides in from right

私の問題は、アニメーションが開始された場合、Activity B画面が完全に作成されない (GridView アイテムがプログラムで追加される) ため、空の画面が右側からスライドして表示され、ダンプのように見えることです。

私の質問:移行が始まるに作成/ロードすることは可能ですか?Activity B

ここに画像の説明を入力

いくつかのコードを添付しますが、すべてが非常に簡単です。グリッドアイテムだけが異なる状態の画像で構成されています...

アクティビティ A: インテントの開始 (通常どおり)

 Intent intent = new Intent(this, SoundShareActivity.class);
 //...
 intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
 startActivity(intent);
 overridePendingTransition(anim.slide_in_from_right_to_left,
            anim.slide_out_to_left); 
 //anim defined in xml

アクティビティ B: onCreate

 protected void onCreate(Bundle savedInstanceState) {
 //...
 mGridView = (GridView) findViewById(R.id.grid_view_sounds);
 mAdapter = new SoundAdapter(getApplicationContext(), THE_DATA);
 mGridView.setAdapter(mAdapter);
 mGridView.setOnItemClickListener( ... );
 mGridView.setLongClickable(true);
 mGridView.setOnItemLongClickListener(...);
4

2 に答える 2

1

コンテンツを に割り当てることができないため、アクティビティを使用することはできませんView。インフレになるまでコンテンツを割り当てることはできません。これはsetContentView()、通常はアクティビティで発生するOnCreate()ため、Activity最初に開始する必要があります。ただし、一度Activityにアクティブにできるインスタンスは 1 つだけなので、最初のActivity.

回避策: Fragments を使用します。フラグメントのインスタンスを一度に多数持つことができるため、たとえば、Fragment1ロード中にユーザーに表示できますFragment2ViewPagerはフラグメントと組み合わせて使用​​されることが多く、デフォルトで 3 ページをロードします。つまり、ページが に表示されている間、前後ViewPagerのページと対応するフラグメントが実際にロードされているか、すでにロードされています。同様の手法をタスクに使用できます。

于 2014-02-09T16:57:29.300 に答える