2015-01-03 63 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上下文。