2012-05-28 29 views
16

Wiem, że to pytanie powtarza się, ale nie mogę znaleźć odpowiedzi w Internecie.Android Zadzwoń do metody z innej klasy

Chcę wywołać metodę z innej klasy.

Mam Class1 i Class2.

W klasie 2 mam metoda:

public void UpdateEmployee(){ 
    //some code 
} 

Chcę wywołać tę metodę z Class1.

Dzięki za odpowiedź.

---- 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

pokazać swój kod UpdateEmployee, problem jest nie starasz się wydrukować coś, co nie jest ustawiony –

Odpowiedz

51

należy użyć następującego kodu:

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

w przypadku, gdy nie chcesz, aby utworzyć nową instancję do wywołania metody, można decalre metodę jako static i wtedy można po prostu zadzwonić Class2.UpdateEmployee().

+0

Otrzymuję NullPointerExeption. – HaOx

+0

Na jakiej linii i kiedy próbujesz użyć statycznego lub zwykłego? –

+0

Używam go OnClickButton. Employe updEmple = new Employee(); updEmple.UpdateEmployee(); – HaOx

5

W Class1:

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

, a jeśli don nie chcesz utworzyć klasy 2, zadeklaruj UpdateEmployee jako statyczny i wywołaj go w następujący sposób:

Class2.UpdateEmployee(); 

Zazwyczaj jednak chcesz zrobić to, co powiedział @parag.

+0

normalnie ... bo nie będzie w stanie uzyskać dostęp do zmiennych inaczej. – FlorianB

-4

Dodaj to w MainActivity.

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

Chce wywołać metodę z innej klasy, a nie aby rozpocząć działanie ... – JCoder

Powiązane problemy