- 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
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.