如何从线程中打开 activity
How to open an activity from a thread
我有 2 个 类。在 ConnectThread 的末尾我想打开一个新的 activity。我在 Whosebug 上找到的这段代码,但它不起作用。谁能告诉我如何解决这个问题。
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);
}
});
}
}
我 认为 (因为你没有告诉我们你的错误)你的问题是 Context
。 startActivity
是 Context
的一个方法,但是在你调用 startActivity
的地方,作用域在 Runnable
或 ConnectThread
之内,它没有方法 [=11] =].如果我是对的,那么将 Context
传递给您的线程并使用 myContext.startActivity()
.
如果这不是问题所在,请告诉我您遇到的错误,我相信我可以提供帮助。
您可能需要根据上下文使用 FLAG_ACTIVITY_NEW_TASK
(如果不是 Activity
上下文。
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);
}
});
}
}
我有 2 个 类。在 ConnectThread 的末尾我想打开一个新的 activity。我在 Whosebug 上找到的这段代码,但它不起作用。谁能告诉我如何解决这个问题。
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);
}
});
}
}
我 认为 (因为你没有告诉我们你的错误)你的问题是 Context
。 startActivity
是 Context
的一个方法,但是在你调用 startActivity
的地方,作用域在 Runnable
或 ConnectThread
之内,它没有方法 [=11] =].如果我是对的,那么将 Context
传递给您的线程并使用 myContext.startActivity()
.
如果这不是问题所在,请告诉我您遇到的错误,我相信我可以提供帮助。
您可能需要根据上下文使用 FLAG_ACTIVITY_NEW_TASK
(如果不是 Activity
上下文。
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);
}
});
}
}