2012-03-31 2 views
0

Voici le code que j'utilise pour créer un AlertDialog personnalisé.AlertDialog Force Fermer

public void onButtonClicked(View v) { 
    LayoutInflater onButtonClick = LayoutInflater.from(this); 
    PropManager propmanager = new PropManager(); 
    final View onButtonClickView = onButtonClick.inflate(
      R.layout.buttondialog, null); 
    TextView mbname = (TextView) findViewById(R.id.mbname); 
    TextView mbdisplayid = (TextView) findViewById(R.id.mbdisplayid); 
    TextView mbdevice = (TextView) findViewById(R.id.mbdevice); 
    TextView mbkernel = (TextView) findViewById(R.id.mbkernel); 
    TextView mbvspath = (TextView) findViewById(R.id.mbvspath); 

    String mbvspathv = propmanager.multiBootVSPathProp(); 
    String mbkernelv = propmanager.kernelProp(); 
    String mbdevidev = propmanager.deviceProp(); 
    String mdisplayidv = propmanager.displayIdProp(); 
    String mbnanev = propmanager.vSNameProp(); 
    mbname.setText(mbnanev); 
    mbdisplayid.setText(mdisplayidv); 
    mbdevice.setText(mbdevidev); 
    mbkernel.setText(mbkernelv); 
    mbvspath.setText(mbvspathv); 
    new AlertDialog.Builder(this).setView(onButtonClickView).show(); 

} 

public String vSNameProp() { 
    String mbvsprop = "none"; 
    try { 
     Scanner scanner = new Scanner(propReader()).useDelimiter("\\n"); 
     scanner.findWithinHorizon(
       Pattern.compile("\\[ro.multiboot.vs\\].*\\[(.+?)\\]"), 0); 
     mbvsprop = scanner.match().group(1); 
    } catch (Exception e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    File vs = new File(mbvsprop); 
    return "Active VFS\t: " + vs.getName(); 
} 

Mais la force se ferme en cliquant sur le bouton.

03-30 17:01:59.717: W/System.err(9802): java.lang.IllegalStateException 
03-30 17:01:59.727: W/System.err(9802):  at java.util.Scanner.match(Scanner.java:963) 
03-30 17:01:59.727: W/System.err(9802):  at com.manager.boot.free.PropManager.vSNameProp(PropManager.java:138) 
03-30 17:01:59.737: W/System.err(9802):  at com.manager.boot.free.OSListActivity.onButtonClicked(OSListActivity.java:1177) 
03-30 17:01:59.737: W/System.err(9802):  at java.lang.reflect.Method.invokeNative(Native Method) 
03-30 17:01:59.737: W/System.err(9802):  at java.lang.reflect.Method.invoke(Method.java:511) 
03-30 17:01:59.737: W/System.err(9802):  at android.view.View$1.onClick(View.java:3039) 
03-30 17:01:59.737: W/System.err(9802):  at android.view.View.performClick(View.java:3511) 
03-30 17:01:59.737: W/System.err(9802):  at android.view.View$PerformClick.run(View.java:14105) 
03-30 17:01:59.737: W/System.err(9802):  at android.os.Handler.handleCallback(Handler.java:605) 
03-30 17:01:59.737: W/System.err(9802):  at android.os.Handler.dispatchMessage(Handler.java:92) 
03-30 17:01:59.747: W/System.err(9802):  at android.os.Looper.loop(Looper.java:137) 
03-30 17:01:59.757: W/System.err(9802):  at android.app.ActivityThread.main(ActivityThread.java:4424) 
03-30 17:01:59.757: W/System.err(9802):  at java.lang.reflect.Method.invokeNative(Native Method) 
03-30 17:01:59.767: W/System.err(9802):  at java.lang.reflect.Method.invoke(Method.java:511) 
03-30 17:01:59.767: W/System.err(9802):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
03-30 17:01:59.767: W/System.err(9802):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
03-30 17:01:59.767: W/System.err(9802):  at dalvik.system.NativeStart.main(Native Method) 
03-30 17:01:59.767: D/AndroidRuntime(9802): Shutting down VM 
03-30 17:01:59.767: W/dalvikvm(9802): threadid=1: thread exiting with uncaught exception (group=0x409c01f8) 
03-30 17:01:59.787: E/AndroidRuntime(9802): FATAL EXCEPTION: main 
03-30 17:01:59.787: E/AndroidRuntime(9802): java.lang.IllegalStateException: Could not execute method of the activity 
03-30 17:01:59.787: E/AndroidRuntime(9802):  at android.view.View$1.onClick(View.java:3044) 
03-30 17:01:59.787: E/AndroidRuntime(9802):  at android.view.View.performClick(View.java:3511) 
03-30 17:01:59.787: E/AndroidRuntime(9802):  at android.view.View$PerformClick.run(View.java:14105 

)

Pourquoi?

Répondre

2

Je ne peux pas dire exactement ce qui ne va pas avec votre code (c'est plus difficile parce que vos noms de variables ne sont pas très descriptifs), il n'y a aucune raison évidente pour laquelle référence est nommée "onButtonClick" .. un objet LayoutInflater il rend plus confus de comprendre ce qui se passe) mais voici un extrait que vous pouvez commencer à partir de ce va créer une coutume AlertDialog:

LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    View layout = inflater.inflate(R.layout.yourLayoutId, (ViewGroup) findViewById(R.id.yourLayoutRoot)); 
    AlertDialog.Builder builder = new AlertDialog.Builder(this) 
    .setView(layout); 
    AlertDialog alertDialog = builder.create(); 
    alertDialog.show(); 

aussi, je pense (mais je ne suis pas positif) que vous auriez besoin de changer vos appels findViewById() à appeler sur votre instance, pas votre activité comme vous êtes maintenant. donc changer:

TextView mbname = (TextView) findViewById(R.id.mbname); 
etc... 

à

TextView mbname = (TextView) onButtonClickView.findViewById(R.id.mbname); 
1

Il n'a rien à voir avec AlertDialog. Votre code traitant du scanner vous pose problème. Vous devez déboguer séparément le code du scanner.

+0

C'était un problème de alertdialog. en utilisant 'TextView mbname = (TextView) onButtonClickView.findViewById (R.id.mbname);' le corrige. –