我是Android中的新手Fragments
。試圖瞭解DialogFragment
。但它說classcastException
。Android中的DialogFragment中的ClassCastException
public class FragmentDialog extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_dialog);
}
void showDialog() {
FragmentTransaction ft = getFragmentManager().beginTransaction();
Fragment prev = getFragmentManager().findFragmentByTag("dialog");
if (prev != null) {
ft.remove(prev);
}
ft.addToBackStack(null);
DialogFragment newFragment = MyDialogFragment.newInstance(0);
newFragment.show(getFragmentManager(), "dialog");
}
public static class MyDialogFragment extends DialogFragment {
static MyDialogFragment newInstance(int num) {
MyDialogFragment f = new MyDialogFragment();
return f;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
int style = DialogFragment.STYLE_NORMAL, theme = 0;
setStyle(style, theme);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_dialog, container,
false);
Button button = (Button) v.findViewById(R.id.show);
button.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
((FragmentDialog)getActivity()).showDialog(); // Error is in this line.
}
});
return v;
}
}
}
logcat的錯誤是:
07-12 15:22:25.241: E/AndroidRuntime(6419): java.lang.ClassCastException: com.example.fragmentexample.FragmentTabs cannot be cast to com.example.fragmentexample.FragmentDialog
07-12 15:22:25.241: E/AndroidRuntime(6419): at com.example.fragmentexample.FragmentDialog$MyDialogFragment$1.onClick(FragmentDialog.java:74)
編輯1#
這FragmentDialog
是FragmentTabs
的一個選項卡。
public class FragmentTabs extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final ActionBar bar = getActionBar();
bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
bar.setDisplayOptions(0, ActionBar.DISPLAY_SHOW_TITLE);
...
...
bar.addTab(bar.newTab()
.setText("Dialog")
.setTabListener(new TabListener<FragmentDialog.MyDialogFragment>(
this, "Dialog", FragmentDialog.MyDialogFragment.class)));
...
...
}
這就是爲什麼((FragmentDialog)getActivity()).showDialog();
這一行返回com.example.fragmentexample.FragmentTabs cannot be cast to com.example.fragmentexample.FragmentDialog
。我怎樣才能得到MyDialogFragment
的活動。
任何幫助解決這個問題將不勝感激。
謝謝
指出行,其中拋出異常。 ((FragmentDialog)getActivity())。showDialog();'中出現錯誤@andranikAzizbekyan( – azizbekian
)。查看編輯 – Gunaseelan
你有另一個活動FragmentTabs嗎? – Nizam