- Forum-Beiträge: 187
12.07.2014, 19:38:05 via Website
12.07.2014 19:38:05 via Website
Ich habe eine Spezielle Idee, und weiss nicht wie dies realisierbar ist, ob überhaupt es realisirbar ist.
ich will über einen String[][] und einer for-scleife eine funktion aufrufen. und zwar mit equals. DAfür habe ich einen Code gefunden (zuunterst) jedenfalls habe ich als einziges was ich nicht wusste was ich damit anfangen soll = Object obj, da habe ich einfach auf null gesetzt
Genauer gesagt soll es folgendermassen dann aussehen
in der hauptactivity =
public void goPRechner(View view){
alertListView alw =new alertListView();
Context ctx = this;
String titel = "Bitte Auswählen";
int viewGroup = android.R.layout.simple_list_item_1;
Resources res =getResources();
int menu = R.array.rechner_glasrechner_auswahl;
String[][] gofunktion = {
{"Neues Projekt","startNewProjekt()"},
{"Vorhandenes Projekt","loadProjekt()"}
};
alw.showSingleDialog(view, ctx, titel , viewGroup , res ,menu , gofunktion);
}
und die alertListView erstellt dann die Liste
public class alertListView{
public void showSingleDialog(View view, Context ctx,String titel,int viewGroup, Resources res, int menu,final String[][] gofunktion){
AlertDialog.Builder builderSingle = new AlertDialog.Builder(ctx);
builderSingle.setIcon(R.drawable.ic_launcher);
builderSingle.setTitle(titel);
final ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(ctx,viewGroup);
String[] al = res.getStringArray(menu);
for(int i=0;i<al.length;i++){
arrayAdapter.add(al[i].toString());
}
builderSingle.setNegativeButton("Abbrechen",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
builderSingle.setAdapter(arrayAdapter,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Log.i("shwoSingleDialog","oncklicklistener activ");
String strName = arrayAdapter.getItem(which);
for(int i=0;i<gofunktion.length;i++){
Log.i("shwoSingleDialog","oncklicklistener forschleife activ");
if(strName.equals(gofunktion[i][0])){
Log.i("shwoSingleDialog","oncklicklistener equalsfrom gofunktion activ");
java.lang.reflect.Method method;
Object obj = null;
String methodName = gofunktion[i][0];
try {
method = obj.getClass().getMethod(methodName);
} catch (SecurityException e) {
Log.i("loadfunktion SE",e.toString());
} catch (NoSuchMethodException e) {
Log.i("loadfunktion NSME",e.toString());
}
}
}
dialog.dismiss();
}
});
builderSingle.show();// TODO Auto-generated method stub
}
}
Jedenfalls bereit mir dies ein Problem:
java.lang.reflect.Method method;
Object obj = null;
String methodName = gofunktion[i][0];
try {
method = obj.getClass().getMethod(methodName);
} catch (SecurityException e) {
Log.i("loadfunktion SE",e.toString());
} catch (NoSuchMethodException e) {
Log.i("loadfunktion NSME",e.toString());
}
Ich habe diesen Code im Internet gefunden, aber aus irgendeinem Grund haut es mir immer den Code um die Ohren und ich weiss nicht wieso , hier der Log
07-12 17:16:18.286: I/shwoSingleDialog(1702): oncklicklistener activ
07-12 17:16:18.286: I/shwoSingleDialog(1702): oncklicklistener forschleife activ
07-12 17:16:18.286: I/shwoSingleDialog(1702): oncklicklistener equalsfrom gofunktion activ
07-12 17:16:18.321: D/AndroidRuntime(1702): Shutting down VM
07-12 17:16:18.321: W/dalvikvm(1702): threadid=1: thread exiting with uncaught exception (group=0x40a71930)
07-12 17:16:18.386: E/AndroidRuntime(1702): FATAL EXCEPTION: main
07-12 17:16:18.386: E/AndroidRuntime(1702): java.lang.NullPointerException
07-12 17:16:18.386: E/AndroidRuntime(1702): at com.awad.awad_glasrechner.alertListView$2.onClick(alertListView.java:51)
07-12 17:16:18.386: E/AndroidRuntime(1702): at com.android.internal.app.AlertController$AlertParams$3.onItemClick(AlertController.java:941)
07-12 17:16:18.386: E/AndroidRuntime(1702): at android.widget.AdapterView.performItemClick(AdapterView.java:298)
07-12 17:16:18.386: E/AndroidRuntime(1702): at android.widget.AbsListView.performItemClick(AbsListView.java:1100)
07-12 17:16:18.386: E/AndroidRuntime(1702): at android.widget.AbsListView$PerformClick.run(AbsListView.java:2749)
07-12 17:16:18.386: E/AndroidRuntime(1702): at android.widget.AbsListView$1.run(AbsListView.java:3423)
07-12 17:16:18.386: E/AndroidRuntime(1702): at android.os.Handler.handleCallback(Handler.java:725)
07-12 17:16:18.386: E/AndroidRuntime(1702): at android.os.Handler.dispatchMessage(Handler.java:92)
07-12 17:16:18.386: E/AndroidRuntime(1702): at android.os.Looper.loop(Looper.java:137)
07-12 17:16:18.386: E/AndroidRuntime(1702): at android.app.ActivityThread.main(ActivityThread.java:5041)
07-12 17:16:18.386: E/AndroidRuntime(1702): at java.lang.reflect.Method.invokeNative(Native Method)
07-12 17:16:18.386: E/AndroidRuntime(1702): at java.lang.reflect.Method.invoke(Method.java:511)
07-12 17:16:18.386: E/AndroidRuntime(1702): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
07-12 17:16:18.386: E/AndroidRuntime(1702): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
07-12 17:16:18.386: E/AndroidRuntime(1702): at dalvik.system.NativeStart.main(Native Method)
07-12 17:16:22.526: I/Process(1702): Sending signal. PID: 1702 SIG: 9