Android 如何从线程打开活动
我有两门课。在ConnectThread的末尾,我想打开一个新的活动。我在StackOverflow上找到了这段代码,但它不起作用。谁能告诉我怎么解决这个问题吗Android 如何从线程打开活动,android,multithreading,Android,Multithreading,我有两门课。在ConnectThread的末尾,我想打开一个新的活动。我在StackOverflow上找到了这段代码,但它不起作用。谁能告诉我怎么解决这个问题吗 public class MainActivity extends Activity { // some code } class ConnectThread extends Thread { Handler handler = new Handler(Looper.getMainLooper());
public class MainActivity extends Activity {
// some code
}
class ConnectThread extends Thread {
Handler handler = new Handler(Looper.getMainLooper());
public ConnectThread(BluetoothDevice device) {
// some code
}
public void run() {
// some code
handler.post(new Runnable() {
@Override
public void run() {
Intent startPostGet = new Intent(MainActivity.this, PostGetActivity.class);
startActivity(startPostGet);
}
});
}
}
我认为(因为您没有告诉我们您的错误)您的问题在于上下文startActivity
是Context
的一种方法,但是当您调用startActivity
时,范围在Runnable
或ConnectThread
中,而该方法没有startActivity
。如果我说的对,那么将上下文
传递给线程并使用myContext.startActivity()
如果这不是问题,告诉我你遇到了什么错误,我相信我能帮上忙
您可能需要根据上下文使用(如果它不是活动
上下文。如何以及在何处使用ConnectThread?ConnectThread似乎没有上下文维护活动值得一提的是,如果上下文
不是活动
,则需要使用标记活动
。
class ConnectThread extends Thread {
Handler handler = new Handler(Looper.getMainLooper());
Context context;
public ConnectThread(Context context, BluetoothDevice device) {
this.context = context;
// some code
}
public void run() {
// some code
handler.post(new Runnable() {
@Override
public void run() {
Intent startPostGet = new Intent(context, PostGetActivity.class);
context.startActivity(startPostGet);
}
});
}
}