[英]Call method in MainActivity class from another class
What I want to do is call a method which is placed in my MainActivity.java file from another subclass.我想要做的是从另一个子类调用放置在我的 MainActivity.java 文件中的方法。 But everytime i want to call this method, my app crashes.
但是每次我想调用这个方法时,我的应用程序都会崩溃。
I already tried to make SetGerateStat() static but that didn't change anything.我已经尝试将 SetGerateStat() 设为静态,但这并没有改变任何东西。 Also, I can build the apk without any errors, the application only crashes when the SetGerateStat() is called from the Thread.
此外,我可以在没有任何错误的情况下构建 apk,应用程序仅在从线程调用 SetGerateStat() 时崩溃。
What am I doing wrong here?我在这里做错了什么?
My code is below (please note that this is only a snippet): MainActivity.java:我的代码如下(请注意,这只是一个片段):MainActivity.java:
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
private CheckedTextView gerätestat;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void setGeraeteStat(boolean x) {
if (x==true) {
gerätestat.setCheckMarkDrawable(android.R.drawable.presence_online);
} else {
gerätestat.setCheckMarkDrawable(android.R.drawable.presence_busy);
}
}
public void onClick(View v) {
if(v==button_refresh) {
Thread connection = new Thread(new Conn("refresh", MainActivity.this));
connection.start();
}
}
Conn.java:连接.java:
public class Conn implements Runnable {
private MainActivity act;
private String actioncommand;
public Conn(String a) {
actioncommand = a;
act = null;
}
public Conn(String a, MainActivity m) {
actioncommand = a;
act = m;
}
public void run() {
switch(actioncommand) {
case "refresh": {
act.setGeraeteStat(true);
}
break;
}
}
Have you forgot to initialize gerätestat ?您是否忘记初始化 gerätestat ? You have to initialize gerätestat after setcontentview.
您必须在 setcontentview 之后初始化 gerätestat。 After that use runOnUIThread method as below
之后使用 runOnUIThread 方法如下
public void setGeraeteStat(final boolean x){
runOnUiThread (new Runnable() {
public void run() {
if (x==true) {
gerätestat.setCheckMarkDrawable(android.R.drawable.presence_online);
} else {
gerätestat.setCheckMarkDrawable(android.R.drawable.presence_busy);
}
}
});}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.