4

애플리케이션에서 구현 된 다른 Java 클래스에서 Android의 활동을 호출 할 수있는 방법에 대한 게시물을 읽었지만 문제는 해결되지 않았습니다.자바 클래스에서 활동을 시작하는 방법은 무엇입니까?

응용 프로그램에 필요한 영구 연결을 처리하는 연결 클래스 (Connection.java)가 있습니다. 이 하나가 싱글 톤 패턴으로 구성되어, 그래서 매번 내가 연결 정보 또는 요청 뭔가가 필요 내가 그런 다음

final Connection conn = Connection.getConnection(getApplicationContext()); 
//... Some Code Here 
conn.methodDoSomethingA(); 

, 내가 포함 된 TabActivity이 5 활동 (A, B, C, D, E) : endConnection() - - 지금

public class Tab extends TabActivity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.tab); 

     final Connection conn = Connection.getConnection(getApplicationContext()); 

     intent = new Intent().setClass(this, A.class); 
     spec = tabHost.newTabSpec("A") 
       .setIndicator("A", res.getDrawable(R.drawable.tab_A)) 
       .setContent(intent); 
     tabHost.addTab(spec); 

     //... same for activities B, C, D and E 

     tabHost.setCurrentTab(0); 
    } 
} 

, 나는 연결을 종료하는 연결 클래스의 공개 방법을 예를 들어, 연결 클래스 내에서 여러 번 호출되는,이 소켓 시간 초과 또는 서버에서 사용자 정의 메시지를 수신 할 때 알려주는 경우 세션을 종료합니다.

여기에서 문제가 시작됩니다. endConnection()을 호출하면 소켓을 닫은 다음 연결 (연결 해제)을 알리는 활동 (Theme.Dialog)을 표시해야합니다. 성공없이 내가 이런 짓을 것을 달성하기 위해 는 :

public class Connection { 
    private static Connection connection = null; 
    private Context appContext = null; 

    private Connection(Context appContext) { 
     this.appContext = appContext; 
    } 

    public static Connection getConnection(Context appContext) { 
     if (connection == null) 
      return connection = new Connection(appContext); 
     else 
      return connection; 
    } 

    public void endConnection() { 
     // ... Close sockets and streams - SOME CODE HERE 

     // Show Disconnect Dialog 
     Intent myIntent = new Intent(appContext, Disconnect.class); 
     myIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     appContext.startActivity(myIntent); 
    } 
} 

나는 또한 Connection.java 클래스에 인수로 TabActivity 컨텍스트를 전달하는 데 노력하고 appContext 대신에 그것을 사용하지만 하나 성공하지. 즉

W/dalvikvm(9449): threadid=3: thread exiting with uncaught exception (group=0x2aaca228) 
E/AndroidRuntime(9449): Uncaught handler: thread main exiting due to uncaught exception 
E/AndroidRuntime(9449): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.test/com.example.test.Disconnect}: java.lang.NullPointerException 

:

나는이 오류를 받고 있어요 - 어떻게 자바 클래스에서 활동을 시작합니다!

+0

어떤 오류가 발생합니까? –

+0

활동 양식 TabActivity를 원하십니까? – iSun

+0

Manifest 파일에서 모든 활동을 선언 했습니까?plz 당신이 가지고있는 오류의 StackTrace를 추가하십시오. – Houcine

답변

4

오류가 발견되었습니다.

우선, 귀하의 의견에 진심으로 감사드립니다.

분명히 나는 ​​모든 것을 잘 했어. 그리고 이것이 완료된 방법입니다!

오류가 나에게 embarasses 초보자의 실수 :

Disconnect.java이 아닌 자신의 내용보기 XML 레이아웃 파일에 존재했던 버튼에 리스너를했다,하지만 다른 레이아웃에 존재!

나는 그것을 결코 의심하지 않는다! 어리석은가요?

은이 게시물은 두 가지 중 하나를위한 모두를 도울 수 있기를 바랍니다 :

  1. 전화 다른 자바 클래스에서 활동;
  2. 생각할 수없는 실수를 탐구하지 않고 질문을 게시하지 마십시오 !!!