java - performClick() 方法不起作用,我得到一个错误
问题描述
我有 2 个 java 类
单击 btn 时,我想单击 btntwo。
当我单击名为 btn 的按钮时,我想自动单击名为 btn 的按钮两个。但我得到一个错误。
主要活动
public class MainActivity extends AppCompatActivity {
Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn = findViewById(R.id.btn);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Log.e("test","testone");
final Main2Activity main2Activity = new Main2Activity();
main2Activity.btntwo
.post(new Runnable(){
@Override
public void run() {
main2Activity.btntwo.performClick();
}
}); }
});
}
}
Main2Activity
public class Main2Activity extends AppCompatActivity {
Button btntwo;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
btntwo = findViewById(R.id.btntwo);
btntwo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.e("test","testtwo");
}
});
}
}
我收到一个错误
2020-05-16 17:06:35.238 8529-8529/com.qarocotwo.myapplication E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.qarocotwo.myapplication, PID: 8529
java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.widget.Button.post(java.lang.Runnable)' on a null object reference
at com.qarocotwo.myapplication.MainActivity$1.onClick(MainActivity.java:25)
at android.view.View.performClick(View.java:7125)
at android.view.View.performClickInternal(View.java:7102)
at android.view.View.access$3500(View.java:801)
at android.view.View$PerformClick.run(View.java:27336)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7356)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
为什么我会收到错误消息?我在哪里做错了你能帮帮我吗?
解决方案
您在错误的位置创建 Main2Activity 类的对象。
public class MainActivity extends AppCompatActivity {
Button btn;
Main2Activity main2Activity;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn = findViewById(R.id.btn);
main2Activity = new Main2Activity();
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Log.e("test","testone");
main2Activity.btntwo
.post(new Runnable(){
@Override
public void run() {
main2Activity.btntwo.performClick();
}
}); }
});
}
}
推荐阅读
- spring-boot - 考虑在 Spring Boot Application 中将 gRPC 与 RabbitMQ/Kafka 等消息队列一起使用
- c - C中实例创建和指向实例创建的指针之间的区别?
- javascript - 在javascript中动态使用数组填充条形图的数据输出
- python - python字典是将数值与numpy数组相关联的最佳数据类型吗?
- android-studio - 如何更改 com.google.android.material.tabs.TabItem 的标签文本颜色
- laravel - 未定义变量:token(查看:D:\xampp\htdocs\myclassicbook\resources\views\users\pages\reset.blade.php)
- python - 第一次尝试 Magic 8 Ball 程序,不循环
- python - Plotly Python 图中的错误在哪里?
- castle-windsor-3 - WindsorContainer 构建过程中出现 MethodAccessException 的原因是什么?
- node.js - React-Native 应用程序在 Android 上立即关闭