terminer l'activité de non activité
Je suis le développement d'une application. Je veux appeler une boîte de dialogue d'alerte à partir du 1er de l'activité. La boîte de dialogue d'alerte est écrit dans une autre classe qui est un non-activité de la classe. La nécessité de l'application, c'est que la vocation de l'activité devrait se terminer d'alerte qui est écrit en non activité de la classe. Le code de l'appel de l'alerte est comme ci-dessous.
L'appel de l'alerte de la 1ère activité:
public class Activity1 extends Activity {
/** Called when the activity is first created. */
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.list_layout);
}//End of onCreate.
/** Back Button. */
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
String message = "Do you Want to Exit.";
Utility.callAlert(message, getApplicationContext());
return true;
}
return super.onKeyDown(keyCode, event);
}
}
Et la classe appelée ayant boîte de dialogue d'alerte est :
public class Utility {
//callAlert method to display alert, when exception occur.
public static void callAlert(String message, final Context context){
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context);
alertDialogBuilder.setTitle("MyApplication.");
alertDialogBuilder.setMessage(message);
alertDialogBuilder.setNeutralButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
((Activity1)context.getApplicationContext()).finish();
} //end onClick.
}); //end alertDialog.setButton.
alertDialogBuilder.show();
}
}
Mais cela me donne l'erreur :
02-25 17:00:45.961: D/AndroidRuntime(444): Shutting down VM
02-25 17:00:45.961: W/dalvikvm(444): threadid=1: thread exiting with uncaught exception (group=0x40015560)
02-25 17:00:45.971: E/AndroidRuntime(444): FATAL EXCEPTION: main
02-25 17:00:45.971: E/AndroidRuntime(444): android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application
02-25 17:00:45.971: E/AndroidRuntime(444): at android.view.ViewRoot.setView(ViewRoot.java:531)
02-25 17:00:45.971: E/AndroidRuntime(444): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:177)
02-25 17:00:45.971: E/AndroidRuntime(444): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
02-25 17:00:45.971: E/AndroidRuntime(444): at android.app.Dialog.show(Dialog.java:241)
02-25 17:00:45.971: E/AndroidRuntime(444): at android.app.AlertDialog$Builder.show(AlertDialog.java:802)
02-25 17:00:45.971: E/AndroidRuntime(444): at com.xxx.myapp.specialclasses.Utility.callAlert(Utility.java:25)
02-25 17:00:45.971: E/AndroidRuntime(444): at com.xxx.myapp.activities.Activity1.onKeyDown(Activity1.java:149)
02-25 17:00:45.971: E/AndroidRuntime(444): at android.view.KeyEvent.dispatch(KeyEvent.java:1256)
02-25 17:00:45.971: E/AndroidRuntime(444): at android.app.Activity.dispatchKeyEvent(Activity.java:2078)
02-25 17:00:45.971: E/AndroidRuntime(444): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:1663)
02-25 17:00:45.971: E/AndroidRuntime(444): at android.view.ViewRoot.deliverKeyEventToViewHierarchy(ViewRoot.java:2560)
02-25 17:00:45.971: E/AndroidRuntime(444): at android.view.ViewRoot.handleFinishedEvent(ViewRoot.java:2535)
02-25 17:00:45.971: E/AndroidRuntime(444): at android.view.ViewRoot.handleMessage(ViewRoot.java:1867)
02-25 17:00:45.971: E/AndroidRuntime(444): at android.os.Handler.dispatchMessage(Handler.java:99)
02-25 17:00:45.971: E/AndroidRuntime(444): at android.os.Looper.loop(Looper.java:123)
02-25 17:00:45.971: E/AndroidRuntime(444): at android.app.ActivityThread.main(ActivityThread.java:3683)
02-25 17:00:45.971: E/AndroidRuntime(444): at java.lang.reflect.Method.invokeNative(Native Method)
02-25 17:00:45.971: E/AndroidRuntime(444): at java.lang.reflect.Method.invoke(Method.java:507)
02-25 17:00:45.971: E/AndroidRuntime(444): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
02-25 17:00:45.971: E/AndroidRuntime(444): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
02-25 17:00:45.971: E/AndroidRuntime(444): at dalvik.system.NativeStart.main(Native Method)
02-25 17:05:46.061: I/Process(444): Sending signal. PID: 444 SIG: 9
OriginalL'auteur Manoj Fegde | 2013-02-25
Vous devez vous connecter pour publier un commentaire.
au lieu de:
utilisation:
et
OriginalL'auteur Archie.bpgc
essayez ceci:
Aucun son ne fonctionne pas. Comme il donne une erreur: impossible de faire une référence statique à un non-staticmethod typr finish() à partir du type d'activité.
La même erreur ?
lorsque vous appelez la méthode essayez avec cette Utilitaire.callAlert(message, Activity1.this);
Je vous remercie pour votre aide. J'ai eu la solution proposée par : @Ali AlNoaimi.
OriginalL'auteur KunalK
Essayez ceci, Vous ne sont pas la création de
Dialog
OriginalL'auteur MuraliGanesan
Je pense que je sais de votre réponse, car je l'ai fait moi-même une fois. Voici mon code et il fonctionne bien!
(De(l'activité)contexte) peut être utilisé pour appeler votre Activité.
Voici NonActivityClass.
Aussi, il peut être utilisé pour exécuter votre thread de l'INTERFACE utilisateur de la non-Activité de la classe. Par exemple,
Espère que cela vous aide!
OriginalL'auteur Aye Chan
Dans l'activité, de créer une nouvelle classe
et de l'appeler à partir de votre classe de boîte de dialogue
ou essayer
OriginalL'auteur Ali AlNoaimi