我想要做的是調用放置在另一個子類的MainActivity.java文件中的方法。但每次我想調用這個方法,我的應用程序崩潰。從另一個類中調用MainActivity類中的方法
我已經試圖使SetGerateStat()靜態,但沒有改變任何東西。另外,我可以在沒有任何錯誤的情況下構建apk,當從線程調用SetGerateStat()時,應用程序只會崩潰。
我在這裏做錯了什麼?
我的代碼如下(請注意,這只是一個片段): 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:
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;
}
}
你不能這樣做從線程 –
UI工作@PavneetSingh但實際上做UI的工作是位於在MainActivity文件,只是被從外部調用的方法。我在這裏瞭解錯誤嗎? –
http://stackoverflow.com/questions/18821878/how-to-use-toast-message-inside-thread-in-android –