2015-01-03 4 views
0

나는 2 개의 클래스가 있습니다. ConnectThread의 끝에서 나는 새로운 활동을 열고 싶다. StackOverflow에서 찾은이 코드는 작동하지만 doensn't 작동하지 않습니다. 아무도이 문제를 해결할 수있는 방법을 말해 줄 수 없습니다.스레드에서 활동을 여는 방법

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

나는 (당신이 우리 귀하의 오류를 말하지 않았기 때문에)이 문제가 Context이라고 생각 . startActivityContext의 메서드이지만, startActivity을 호출하는 범위는 Runnable 또는 ConnectThread이며 범위는 startActivity입니다. 내가 맞다면 Context을 당신의 스레드에 전달하고 myContext.startActivity()을 사용하십시오.

문제가 아닌 경우 어떤 오류가 발생했는지 말해 주시면 도와 드리겠습니다.

그리고 당신은 그것이 Activity 상황이 아니라면 (상황에 따라 FLAG_ACTIVITY_NEW_TASK을 사용해야 할 수도 있습니다.

관련 문제