私はこの壁の壁に当たっています。私のDialogFragmentは、カスタマーアダプタを使用するものを除いて他のすべてのダイアログとうまく機能します。 2度目の向き変更時java.lang.IllegalStateException: Fragment NewAlertDialog{447bc528} not attached to Activity
これはAPI 4+サポートパッケージを使用しています。 >風景 - - >肖像 - > javaのアダプタでAlertDialogを表示しているDialogFragmentは方向変更を生き延びません
- ポートレート:これは、最初の姿勢変化に起こらない
は、それは常に、それはダイアログ上映と、この順番で起こる意味、第二に起こります。 lang.IllegalStateException
- 風景 - >肖像 - >風景 - >ここでjava.lang.IllegalStateException
はダイアログです:
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
final DialogItem[] items = {
new DialogItem(getString(R.string.test1), R.drawable.test1),
new DialogItem(getString(R.string.test2), R.drawable.test2),
};
ListAdapter adapter = new ArrayAdapter<DialogItem>(getActivity(),
android.R.layout.select_dialog_item,
android.R.id.text1,
items){
public View getView(int position, View convertView, ViewGroup parent) {
View v = super.getView(position, convertView, parent);
TextView tv = (TextView)v.findViewById(android.R.id.text1);
tv.setCompoundDrawablesWithIntrinsicBounds(items[position].icon, 0, 0, 0);
int dp10 = (int) (10 * getResources().getDisplayMetrics().density + 0.5f);
tv.setCompoundDrawablePadding(dp10);
return v;
}
};
return new AlertDialog.Builder(getActivity())
.setTitle(R.string.title)
.setIcon(R.drawable.icon)
.setAdapter(adapter, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
if (item == 0)
doThis();
else
doThat();
}
}).create();
}
これはDialogItemです:
class DialogItem {
public final String text;
public final int icon;
public DialogItem(String text, Integer icon) {
this.text = text;
this.icon = icon;
}
@Override
public String toString() {
return text;
}
}
私はAlertDialog.Builder
から.setAdapter()
コールを削除する場合、問題が消えるので、それはアダプタを含むでの問題であることを知っています。
また、私のICSデバイスに問題はないということです。これは、私がテストしているジンジャーブレッドのデバイスでのみ発生します。どんな助けでも大歓迎です!
ありがとうございました!
マット。