2012-05-28 10 views
16

So che questa domanda si ripete ma non riesco a trovare la risposta in Internet.Android Chiama un metodo da un'altra classe

Voglio chiamare un metodo da un'altra classe.

I have Class1 e Class2.

In classe 2 ho quel metodo:

public void UpdateEmployee(){ 
    //some code 
} 

voglio chiamare quel metodo da Class1.

Grazie per qualsiasi risposta.

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

mostrare il codice UpdateEmployee, il problema è che ci si sta cercando di stampare qualcosa che non è impostata –

risposta

51

si dovrebbe utilizzare il seguente codice:

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

Nel caso in cui non si vuole creare una nuova istanza per chiamare il metodo, è possibile decalre il metodo come static e poi si può chiamare Class2.UpdateEmployee().

+0

Ottengo NullPointerExeption. – HaOx

+0

Su quale linea e quando si sta tentando di utilizzare statico o regolare? –

+0

Lo sto usando OnClickButton. Employee updEmple = new Employee(); updEmple.UpdateEmployee(); – HaOx

5

In Class1:

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

E, se don Non voglio istanziare Class2, dichiarare UpdateEmployee come statico e chiamarlo così:

Class2.UpdateEmployee(); 

Tuttavia, normalmente vorrai fare ciò che @parag ha detto.

+0

normalmente ... perché non sarà in grado di accedere alle variabili altrimenti. – FlorianB

-4

Aggiungere questo in MainActivity.

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

Vuole chiamare un metodo da un'altra classe, non avviare l'attività ... – JCoder

Problemi correlati