2017-02-05 19 views
0

私は、ダイアログレイアウトファイルを別のものを作成せずにどのように切り替えることができるか知りたいです。カスタムダイアログのフラグメントを切り替える方法(アンドロイド)

私は私のアプリケーションのBluetoothデバイスに接続するために使用するカスタムダイアログの断片があります。それはデバイスのリストをポップアップし、私は自分の選択したデバイスに接続します。

私は、このダイアログの断片で使用する2つのXMLレイアウトを持っている: - 私はに接続すると、他の住宅や画像ビュー

- 最初のものは、私が に接続するデバイスのためのリストビューを保持しますデバイスから、レイアウトをリストからイメージビューを格納するレイアウトに切り替える必要があります。私のコードでは、接続状態をチェックする変数があります。

私は接続していた場合、私はこのような他のレイアウトに切り替え:

getDialog().setContentView(R.layout.xml2); 

、それが動作しますが、私は再びダイアログを表示したいときに、私はこのエラーを取得します。

Attempt to invoke virtual method 'void android.app.Dialog.setContentView(int)' on a null object reference 

私のonCreateViewメソッドでは、接続状態を確認しています。

if (connected) { 

    return inflater.inflate(R.layout.xml2, container, false); 

} else { 

    return inflater.inflate(R.layout.xml1, container, false); 
} 

私が知っているのは、状態がconnectedに変更されたときのgetDialog()。setContentViewの変更に関係しています。私はonCreateViewが有効になるように、デフォルトのビューを元に戻す方法を考えています。これを行う別の方法があるなら、私はそれについて聞くのが好きです。何か案は?事前に

おかげで...

+0

あなたがしようとしていることを示す完全な例を投稿してください。コードは、問題を再現するために必要なすべてのものでなければならないが、その質問に無関係なものは含まない。具体的には、Javaが必要とするように、すべてのコードをクラスとメソッドに含める必要があります。 –

+0

2つの異なるレイアウトを持つ1つのフラグメントではなく、2つの異なるフラグメントを作成することをお勧めします。 –

+0

[NullPointerExceptionとは何か、そしてそれを修正する方法は?](http://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix-it) ) –

答えて

0

あなたgetDialog()メソッドはnullを返します。あなたはそれを見たいかもしれません。

+0

はい、私はそれを得る。 –

+0

切り替えの代わりに、その特定のレイアウトファイル内に同じコードを保存して、それらの可視性を管理することができます。それははるかに簡単です。 – Debdeep

+0

他のレイアウトはいくつかの要素を含んでいる可能性があり、そのすべてを管理することはherculean –

関連する問題