Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/220.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何从线程打开活动_Android_Multithreading - Fatal编程技术网

Android 如何从线程打开活动

Android 如何从线程打开活动,android,multithreading,Android,Multithreading,我有两门课。在ConnectThread的末尾,我想打开一个新的活动。我在StackOverflow上找到了这段代码,但它不起作用。谁能告诉我怎么解决这个问题吗 public class MainActivity extends Activity { // some code } class ConnectThread extends Thread { Handler handler = new Handler(Looper.getMainLooper());

我有两门课。在ConnectThread的末尾,我想打开一个新的活动。我在StackOverflow上找到了这段代码,但它不起作用。谁能告诉我怎么解决这个问题吗

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);
            }
        });   
    }
}