2011-12-14 11 views
4

私はアプリケーションで実装された別のJavaクラスからAndroidのアクティビティを呼び出す方法についていくつかの記事を読んでいますが、私の問題には答えません。Javaクラスからアクティビティを開始するにはどうすればよいですか?

私は、アプリケーションに必要な永続的接続を処理する接続クラス(Connection.java)を持っています。 この1つはSingletonパターンで構成されているので、毎回私は、接続情報または要求何かを必要とする私は:その後

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

は、私は接続を終了するConnectionクラスにパブリックメソッドを持って、たとえば、Connectionクラスの中に複数回呼び出され、そこにソケットのタイムアウトであるか、サーバーからのカスタムメッセージを受信したときに通知するときセッションを終了する。

問題はここから始まる - 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 

: - Javaクラスから活動を開始するにはどのように?

+0

どのようなエラーが表示されますか? –

+0

あなたはアクティビティフォームTabActivityを意図しますか? – iSun

+0

マニフェストファイルであなたのすべてのアクティビティを宣言しましたか?あなたが持っているエラーのStackTraceを追加してください – Houcine

答えて

4

エラーが見つかりました。

まず、ご意見ありがとうございます。

明らかに私はすべてのことをOKにしました、そして、これは完了です!

エラーが私をembarasses初心者の間違いだった:

Disconnect.javaが彼のコンテンツビューのXMLレイアウトファイルに存在するが、それは別のレイアウトに存在していなかったボタンにリスナーを持っていました!

私はそれを疑ったことはありません!愚かな、それではない!

私はこのポストは2つのいずれかのために皆を助けることを願って:

  1. は、別のJavaクラスからのアクティビティを呼び出します。
  2. 考えられない間違いを探ることなく質問を投稿しないでください!
関連する問題