2012-05-28 2 views
16

Ich weiß, dass diese Frage wiederholt wird, aber ich kann die Antwort im Internet nicht finden.Android Rufen Sie eine Methode aus einer anderen Klasse

Ich möchte eine Methode aus einer anderen Klasse aufrufen.

Ich habe Class1 und Class2.

In Klasse 2 Ich habe diese Methode:

public void UpdateEmployee(){ 
    //some code 
} 

Ich möchte diese Methode von Class1 nennen.

Danke für jede Antwort.

---- ---- EDIT

final Button btnUpdate = (Button)findViewById(R.id.btnUpd); 
    btnUpdate.setOnClickListener(new View.OnClickListener() {  
    public void onClick(View v) { 
      Employee updEmple = new Employee(); 
      updEmple.UpdateEmployee();  

    } 
    }); 

---- --- LogCat

05-28 16:30:44.030: E/AndroidRuntime(25198): FATAL EXCEPTION: main 
05-28 16:30:44.030: E/AndroidRuntime(25198): java.lang.NullPointerException: println needs a message 
05-28 16:30:44.030: E/AndroidRuntime(25198): at android.util.Log.println_native(Native Method) 
05-28 16:30:44.030: E/AndroidRuntime(25198): at android.util.Log.v(Log.java:116) 
05-28 16:30:44.030: E/AndroidRuntime(25198): at and.net.Employee.UpdateEmployee(Employee.java:77) 
05-28 16:30:44.030: E/AndroidRuntime(25198): at and.net.AndActivity$2.onClick(AndActivity.java:51) 
05-28 16:30:44.030: E/AndroidRuntime(25198): at android.view.View.performClick(View.java:2485) 
05-28 16:30:44.030: E/AndroidRuntime(25198): at android.view.View$PerformClick.run(View.java:9080) 
05-28 16:30:44.030: E/AndroidRuntime(25198): at android.os.Handler.handleCallback(Handler.java:587) 
05-28 16:30:44.030: E/AndroidRuntime(25198): at android.os.Handler.dispatchMessage(Handler.java:92) 
05-28 16:30:44.030: E/AndroidRuntime(25198): at android.os.Looper.loop(Looper.java:123) 
05-28 16:30:44.030: E/AndroidRuntime(25198): at android.app.ActivityThread.main(ActivityThread.java:3683) 
05-28 16:30:44.030: E/AndroidRuntime(25198): at java.lang.reflect.Method.invokeNative(Native Method) 
05-28 16:30:44.030: E/AndroidRuntime(25198): at java.lang.reflect.Method.invoke(Method.java:507) 
05-28 16:30:44.030: E/AndroidRuntime(25198): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
05-28 16:30:44.030: E/AndroidRuntime(25198): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
05-28 16:30:44.030: E/AndroidRuntime(25198): at dalvik.system.NativeStart.main(Native Method) 
+1

zeigen Sie Ihren UpdateEmployee Code, das Problem gibt es Sie versuchen, etwas zu drucken, die nicht –

Antwort

51

Sie sollten den folgenden Code verwenden:

Class2 cls2 = new Class2(); 
cls2.UpdateEmployee(); 

Falls Sie die Methode nicht eine neue Instanz erstellen möchten, rufen Sie die Methode als static decalre und dann können Sie einfach Class2.UpdateEmployee() nennen.

+0

Ich bekomme NullPointerExeption. – HaOx

+0

Auf welcher Linie und wann versuchen Sie, die statische oder die regelmäßige zu verwenden? –

+0

Ich benutze es OnClickButton. Mitarbeiter updEmple = new Employee(); updEmple.UpdateEmployee(); – HaOx

5

In Class1:

Class2 inst = new Class2(); 
inst.UpdateEmployee(); 
5

Und, wenn Sie don möchte Class2 nicht instanziieren, UpdateEmployee als statisch deklarieren und es so nennen:

Class2.UpdateEmployee(); 

Allerdings möchten Sie normalerweise tun, was @parag sagte.

+0

normalerweise gesetzt ... weil Sie sonst nicht die Variablen zugreifen können. – FlorianB

-4

Fügen Sie dies in MainActivity hinzu.

Intent intent = new Intent(getApplicationContext(), Heightimage.class); 
startActivity(intent); 
+3

Er möchte eine Methode aus einer anderen Klasse aufrufen, nicht um die Aktivität zu starten ... – JCoder