J'ai une boîte de dialogue personnalisée dans mon application et j'ai un problème pour atteindre le comportement souhaité. Mon dialogue a 4 boutons. (Retour, Valide, Modifier et Restaurer). Lorsque l'utilisateur clique sur Modifier ou Valider, je souhaite appeler une autre activité. Donc j'utilise Intent mais ça plante.Problème avec la boîte de dialogue personnalisée Android
L'erreur Log:
05-19 13: 29: 21,495: ERROR/DEBUGTAG (974): java.lang.NullPointerException 05-19 13: 29: 21,495: ERREUR/DEBUGTAG (974):.
à android.content.ComponentName (ComponentName.java:75) 05-19 13: 29: 21,495: ERROR/DEBUGTAG (974): à android.content.Intent (intention.. java: 2551) 05-19 13: 29: 21.495: ERROR/DEBUGTAG (974): à com.android.booztermobile.activity.HeaderMailDisplayActivity.onClick (HeaderMailDisplayActivity.java:571) 05-19 13: 29: 21.495: ERREUR/DEBUGTAG (974): au android.view.View.performClick (View.java: 2364) 05-19 13: 29: 21,495: ERROR/DEBUGTAG (974): à android.view.View.onTouchEvent (View.java:4179) 05-19 13: 29: 21,495: ERROR/DEBUGTAG (974): à android.widget.TextView.onTouchEvent (TextView.java:6540) 05-19 13: 29: 21.495: ERROR/DEBUGTAG (974): à android.view.View.dispatchTouchEvent (Affichage. java: 3709) 05-19 13: 29: 21.495: ERREUR/DEBUGTAG (974): à android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:884) 05-19 13: 29: 21,495: ERROR/DEBUGTAG (974): à android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:884) 05-19 13: 29: 21,495: ERROR/DEBUGTAG (974): à android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:884) 05-19 13: 29: 21,495: ERROR/DEBUGTAG (974) : à android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:884) 05-19 13: 29: 21,495: ERROR/DEBUGTAG (974): à android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:884 05-19 13: 29: 21.495: ERREUR/DEBUGTAG (974): à android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:884) 05-19 13: 29: 21,495: ERREUR/DEBUGTAG (974): à com.android.internal.policy.impl.PhoneWindow $ DecorView.superDispatchTouchEvent (PhoneWindow.java:1659) 05-19 13: 29: 21,495: ERROR/DEBUGTAG (974): à com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent (PhoneWindow.java:1107) 05- 19 13: 29: 21.495: ERROR/DEBUGTAG (974): à android.app.Dialog.dispatchTouchEvent (Dialog.java:643) 05-19 13: 29: 21.495: ERROR/DEBUGTAG (974): at com.android.internal.policy.impl.PhoneWindow $ DecorView.dispatchTouchEvent (PhoneWindow.java:1643) 05-19 13: 29: 21,495: ERROR/DEBUGTAG (974): à android.view.ViewRoot.handleMessage (ViewRoot.java:1691) 05-19 13: 29: 21,495: ERROR/DEBUGTAG (974): à android.os.Handler.dispatchMessage (Handler.java:99) 05-19 13: 29: 21.495: ERROR/DEBUGTAG (974): à android.os.Looper.loop (Looper.java: 123) 05-19 13:29:21.495: ERROR/DEBUGTAG (974): à android.app.ActivityThread.main (ActivityThread.java:4363) 05-19 13: 29: 21,495: ERROR/DEBUGTAG (974): à java.lang. reflect.Method.invokeNative (native méthode) 05-19 13: 29: 21.495: ERROR/DEBUGTAG (974): à java.lang.reflect.Method.invoke (Method.java:521) 05-19 13 : 29: 21,495: ERROR/DEBUGTAG (974): à com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:860) 05-19 13: 29: 21,495: ERROR/DEBUGTAG (974): au com.android.internal.os.ZygoteInit.main (ZygoteInit.java:618) 05-19 13: 29: 21,495: ERREUR/DEBUGTAG (974): à dalvik.system.NativeStart.main (natif Méthode)
Mon dialogue personnalisé:
package com.android.booztermobile.services;
import com.android.booztermobile.R;
import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import android.widget.Button;
public class MailDialog extends Dialog {
private Button btnValid;
private Button btnBack;
private Button btnRestore;
private Button btnModify;
private Context context;
public MailDialog(Context cont) {
super(cont);
context = cont;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d("TestApp", "Dialog created");
setContentView(R.layout.dialog_classement);
btnValid = (Button) findViewById(R.id.btnValidClassement);
btnBack = (Button) findViewById(R.id.btnBackClassement);
btnRestore = (Button) findViewById(R.id.btnRestoreClassement);
btnModify = (Button) findViewById(R.id.btnModifyClassement);
}
}
et l'activité (coupée parce que trop long):
//create dialog
public void getMailInformations(View v, Context context){
currentMail = (MailHeader) v.getTag();
dial = new MailDialog(context);
dial.setTitle("Classement");
dial.show();
btnValidClassement = (Button) dial.findViewById(R.id.btnValidClassement);
btnValidClassement.setOnClickListener(this);
}
/** onclick: */
public void onClick(View view) {
//THIS WORKS (Activity Button)
if (view == lblPreviousMails) {
positionList -= 20;
// create Intent
Intent defineIntentDisplayPreviousMails = new Intent(HeaderMailDisplayActivity.this, HeaderMailDisplayActivity.class);
//Create bundle to pass informations to the other activity
Bundle objetbundle = new Bundle();
objetbundle.putString("positionList", String.valueOf(positionList));
objetbundle.putStringArrayList("currentMails", seqnumList);
objetbundle.putString("uidh", uidh);
defineIntentDisplayPreviousMails.putExtras(objetbundle);
// call headermailDisplayActivity
HeaderMailDisplayActivity.this.startActivity(defineIntentDisplayPreviousMails);
}
//THIS DOESN'T WORKS (Dialog Button)
if(view == btnValidClassement){
try{
ClassementHandlerCall classement = new ClassementHandlerCall();
boolean mailClassify = classement.classifyMail(AuthentificationActivity.uidh,
String.valueOf(currentMail.getSeqnum()), null, null);
dial.dismiss();
if (mailClassify == true){
//create Intent
Intent defineIntentClassifyMails = new Intent(MailClassificationActivity.this, HeaderMailDisplayActivity.class);
// Object that allows to pass person's uidh and positionList onto HeaderMailDisplayActivity
Bundle objetbundle = new Bundle();
objetbundle.putString("uidh",uidh);
objetbundle.putString("positionList", String.valueOf(positionList));
defineIntentClassifyMails.putExtras(objetbundle);
// call HeaderMailDisplayActivity
MailClassificationActivity.this.startActivity(defineIntentClassifyMails);
}
}catch(Exception e){
// TODO Auto-generated catch block
Log.e("DEBUGTAG","Error occured", e);
e.printStackTrace();
}
}
}
s'il vous plaît formater votre code .. merci – hara
oui, j'ai essayé, mais j'ai mis [code] [/ code], et il semble ne fonctionne pas – Nanis
Lisez ceci pour que vous puissiez apprendre à utiliser l'éditeur: http: //stackoverflow.com/editing-help – Cristian