2011-07-02 7 views
0

res/layoutフォルダにmain.xmlとpage2.xmlという2つのレイアウトファイルがあります。私はpage2.xmlに変更するAndroidのギャラリービューを他のページで使用する方法

setContentView(R.layout.page2); 

を開始歓迎の情報やボタンを持っているmain.xmlで 。

page2.xmlにギャラリービューを追加するまではうまくいきました。

ContentViewを開始してから次のようなpage2に設定すると問題ありません。

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.page2); 
    Gallery g = (Gallery) findViewById(R.id.gallery);  
    g.setAdapter(new ImageAdapter(this)); 

しかし、私はページを開始することを示すために最初のmain.xmlを呼び出して...

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    Gallery g = (Gallery) findViewById(R.id.gallery);  
    g.setAdapter(new ImageAdapter(this)); 

アプリリターンエラー。 私は、問題はラインのコンテキストで

g.setAdapter(new ImageAdapter(this)); 

であることを知っているが、私は完全に右のコンテキストを渡すか、または別の方法でそれを解決する方法を知らない(しかし、私は1つのXML内のすべてのレイアウトを持っている必要はありませんファイル)。

+0

どのようなエラー(例外)が発生しましたか? – xandy

+0

ボタンはsetContentViewでpage2.xmlを開きますが、後で例2のonCreateとして表示するとします。 1つか2つのアクティビティがある場合は私には分かりません。 – BrainCrash

+0

画面上で私はそれが強制終了されたことが分かりました。私はデバッガでより多くをチェックしようとしていましたが、詳細なエラーコードは見つかりませんでした。私には1つのアクティビティがあります。新しいアクティビティを開始するためにIntentを使用しないで、ボタンを押した後に別のContentViewを設定するだけです:public void buttonPressed(View target){setContentView(R.layout.page2); \t} – Michal

答えて

1

あなたの説明(ログが傷つくことはありません)から完全にはっきりしませんが、gallerymain.xmlに定義されていないため、NULLポインタ例外が発生していると思います。問題の解決策は2つあります。

  1. 2つの「ページ」を2つのアクティビティに分割します。これは物事を扱うもっと自然な方法です。あなたの携帯電話/エミュレータを回転させてみると、私の言いたいことがわかります。ユーザーがボタンなどをクリックすると、startActivity()に電話してからfinish()に電話をかけるので、歓迎活動は掛からない。
  2. findViewById()は、現在アクティビティで「可視」になっているものに作用します。 setContentView(main)を行ったので、あなたのGalleryはそこにはいません。 「ページを変更する」(setContentView(R.layout.page2);)を呼び出した後でのみ、ギャラリーを「取得」してみてください。

ただし、最初のオプションをお勧めします。

+0

多くのThx。 2つのアクティビティが適切に機能しています。私は単純なレイアウトの変更が1つのアクティビティにとどまると思った。私はまた、ビューを変更した後に設定アダプターを移動しようとしました: 'public void buttonPressed(View target){setContentView(R.layout.page); g.setAdapter(new ImageAdapter(this));} 'このエラーはそのままです。だから私はオプション1を使用したい:) – Michal

+0

素晴らしい!私が言ったように、そうでなければあなたは状態(hasSeenWelcome)などを保存しなければならないので、はるかに自然です。 – dmon

関連する問題