2017-11-13 16 views
0

私がしたいのは、ボタンをクリックするとすぐにサービスを開始することです。サービスを開始したら、すぐに別のアクティビティを意図します。 サービスを開始して、別のアクティビティに同時にリダイレクトする方法は?

は、ここでそれを達成するために私のコードです:

button.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
     //here I start the service 
     Intent intent = new Intent(MyActivity.this, UploadService.class); 
       intent.putExtra(UploadService.ID,id); 
     startService(intent); 

     //after start the service,I want to redirect to Activity2.class 
     Intent intent1 = new Intent(MyActivity.this,Activity2.class); 
     startActivity(intent1); 

     } 
} 

しかし、私はこれを行うと、サービスが開始されていない、とない代わりに、それは前のアクティビティにリダイレクトし、Activity2.classにリダイレクトします。

私はこの問題はまだここで同じ

は、私がUploadService.classにしようとしたものですService.classonHandleIntent(Intent intent)intentを試してみました:

@Override 
protected void onHandleIntent(Intent intent) { 
    //other code here 

    Intent intent1 = new Intent(MyActivity.this,Activity2.class); 
    startActivity(intent1); 
} 

しかし、まだサービスが起動しない、との意図以前のアクティビティ(MyActivity.classが意図しているアクティビティ)

Serviceを開始した直後に別のactivityにリダイレクトするにはどうすればよいですか?

編集: 私はまだのようなマニフェストでUploadServiceを宣言:

<service 
    android:name=".services.UploadService" 
    android:enabled="true"> 
</service> 

だから私はまだここに行方不明何?

+0

を使用して、次に実行している場合は? – Kuls

+0

なぜなら '.this'を使うだけでは解決できないのです。間違っていると正しい方法を教えてください。 – ken

+0

@kenあなたのマニフェストのサービスを更新してサービスを拡張するサービスクラスを確認してください。 –

答えて

0

サービスクラスをmanifest.xmlに登録していることを確認してください。 サービスクラス名を「サービス」から別の名前に変更してみてください。 Service.javaクラスはSystemクラスです。

がサービスを起動してみてください

startService(new Intent(context, MyService.class)); 

を編集

より以下のように明確化は、まず、あなたのアプリが実行中か確認していません。アプリケーションが実行されていない場合は、このコードを呼び出します。

Intent i = new Intent(context,SecondActivity.class); 
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
context.startActivity(i); 

は、このコード使用すると、サービスからこれを呼び出している場合は、** MyActivity.this **コンテキストを使用しているのはなぜ

Intent i = new Intent(context,SecondActivity.class);  
context.startActivity(i); 
+0

私はすでにマニフェストで宣言しています。サービスはここに書きます。実際はService.classではありません。 – ken

+0

putExtraをインテントにする必要があります。 – ken

+0

startService(新しいインテント(コンテキスト、MyService.class).putExtra(Service.ID、id));これを試してください –

関連する問題