Ich entwickle Android-Kartenspiel, und ich benutze DialogFragment, wo ich einige Bilder rendern und dem Spieler sagen, gegen den Gegner zu handeln.android DialogFragment mDialog ist null Ursache Ausnahme
das folgende Stück Code wird oft ohne Fehler ausgeführt, aber nach sagen wir 5 bis 10 mal die folgende Ausnahme aufgetreten ist.
E/AndroidRuntime: FATAL EXCEPTION: mainProcess: com.arabdealgame.arabdealgame, PID: 8359
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.app.Dialog.setOwnerActivity(android.app.Activity)' on a null object reference
at android.app.DialogFragment.onActivityCreated(DialogFragment.java:482)
at com.arabdealgame.activities.dialog.RentCardDialog.onActivityCreated(RentCardDialog.java:342)
at android.app.Fragment.performActivityCreated(Fragment.java:2362)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1014)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1171)
at android.app.BackStackRecord.run(BackStackRecord.java:815)
at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1578)
at android.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:563)
at com.arabdealgame.bo.Actions.RentActionCard$5.run(RentActionCard.java:315)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6077)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
die obige Ausnahme ist bezeichnend, dass im Inneren android.app.DialogFragment mDialog an der Linie mDialog.setContentView (view) null ist;
android.app.DialogFragment
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
if (!mShowsDialog) {
return;
}
View view = getView();
if (view != null) {
if (view.getParent() != null) {
throw new IllegalStateException("DialogFragment can not be attached to a container view");
}
mDialog.setContentView(view);
}
mDialog.setOwnerActivity(getActivity());
ich von hier den Dialog am Instanziieren der Fehler bei
boolean executePendingTransactions = fm.executePendingTransactions auftreten(); die ich hinzugefügt, wie in einem verwandten Beitrag vorgeschlagen, um das Problem zu beheben. bevor diese Anweisung des Hinzufügen der Fehler ohne Angabe von Klasse unter meinem Paket auftritt
RentActionCard.java
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
MyLog.i(TAG, "run: --------------------------1");
FragmentManager fm = getActivity().getFragmentManager();
MyLog.i(TAG, "run: --------------------------2");
RentCardDialog rentCardDialog = new RentCardDialog();
MyLog.i(TAG, "run: --------------------------3");
if (!GameInfo.getCurrentPlayer().isUser()) {
MyLog.i(TAG, "run: --------------------------4");
rentCardDialog.setAgainstUser(true);
}
rentCardDialog.show(fm, "ccc");
boolean executePendingTransactions = fm.executePendingTransactions();
MyLog.d(TAG, "RentActionCard - executePendingTransactions : " + executePendingTransactions);
MyLog.i(TAG, "run: --------------------------5");
}
});
diese Methode für die Fehlersuche in meinem Dialog
@Override
public void onActivityCreated(Bundle savedInstanceState) {
MyLog.i(TAG, "onActivityCreated: ----------------------------------");
super.onActivityCreated(savedInstanceState);
}
Mögliche Duplikate von [Was ist eine NullPointerException, und wie behebe ich es?] (Http://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix -it) –
es ist keine Lösung für meinen Fall, da die Ausnahme innerhalb der Android-Bibliothek passiert nicht mein Code – mhmdawwad
können Sie ein Snippet von, wenn Sie Ihre 'mDialog' Variable initialisieren? – payloc