从另一个类中调用Android方法

24

我知道这个问题已经有重复,但是我在互联网上找不到答案。

我想从另一个类中调用一个方法。

我有Class1和Class2。

在Class2中我有这个方法:

public void UpdateEmployee(){
    //some code
}

我想从Class1中调用上述方法。

感谢任何回答。

----编辑----

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

----日志记录---

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
展示你的UpdateEmployee代码,问题就在那里,你试图打印一个未设置的东西。 - eric.itzhak
4个回答

75
你应该使用以下代码:

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

如果你不想创建一个新的实例来调用方法,你可以将该方法声明为static,然后就可以直接调用 Class2.UpdateEmployee()


你是在哪一行以及何时尝试使用静态或常规的? - eric.itzhak
我正在使用 OnClickButton。Employee updEmple = new Employee(); updEmple.UpdateEmployee(); - HaOx
1
编辑你的问题并发布logcat。 - eric.itzhak
几乎就是这么简单,但别忘了在Class 2中添加引用,否则Class 1甚至都无法编译。公共类Class2扩展自AppCompatActivity {public Class2() { } - Wraithious
如何获取响应以及相关内容。 - San Daniel

8

在Class1中:

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

6

如果您不想实例化Class2,则将UpdateEmployee声明为静态,并像这样调用它:

Class2.UpdateEmployee();

然而,通常您会想要执行@parag所说的操作。

通常...因为否则您将无法访问变量。 - FlorianB

-7

将此代码添加到MainActivity中。

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

1
这不是在调用类,而是在“启动”一个类。 - Op.Kemal
我不在乎是调用还是启动一个新类 :D - Cornea Valentin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接