2015-01-03 68 views
0

我有2个类。在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); 
      } 
     }); 
    } 
} 
+0

如何以及在何处使用ConnectThread?看来ConnectThread没有上下文MainActivity – SorryForMyEnglish

回答

0
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); 
      } 
     }); 
    } 
} 
+1

值得一提的是,如果'context'不是'Activity',你需要使用'FLAG_ACTIVITY_NEW_TASK'。 – Jakar

+0

非常感谢,这工作 – Maarten

0

认为(因为你没有告诉我们你的错误),你的问题是ContextstartActivityContext的一种方法,但您拨打startActivity时,范围在RunnableConnectThread之内,该方法不具有方法startActivity。如果我对此有所了解,请将Context传递给您的线索并使用myContext.startActivity()

如果这不是问题,告诉我你得到了什么错误,我相信我可以提供帮助。

,您可能需要使用FLAG_ACTIVITY_NEW_TASK取决于上下文(如果它不是一个Activity上下文。