2011-05-14 28 views
4

私はアンドロイドで私のアプリに奇妙な問題があります。私は通知をして、通知がクリックされたときに新しい活動を開始したいと思います。問題は、通知をクリックしても何も起こらず、どこに問題があるのか​​わからないということです。誰も私を助けることができるここに私のコードです:?コメントと同様に通知がクリックされたときにアクティビティを起動する方法は?

notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 
CharSequence NotificationTicket = "Notification"; 
CharSequence NotificationTitle = "Notification"; 
CharSequence NotificationContent = "Test"; 
long when = System.currentTimeMillis(); 

Notification notification = new Notification(R.drawable.icon, 
NotificationTicket, when); 

Context context = getApplicationContext(); 

Intent notificationIntent = new Intent(this, ShopsOnMap.class); 
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, 
notificationIntent, 0); 

notification.setLatestEventInfo(context, NotificationTitle, NotificationContent, contentIntent); 
notificationManager.notify(NOTIFICATION_ID, notification); 
notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP| Intent.FLAG_ACTIVITY_SINGLE_TOP); 
+0

ちょうどいいヒント:上にボタンがあるバーでは、コードを簡単に書式設定できます(たとえば、{{}}ボタンを使用します)。 – Nanne

+0

問題はありません。あなたのShopsOnMapアクティビティのoncreateにデバッグ用の 'Log.d'コードを追加して、問題が存在するかどうか確認したいでしょうか? – Nanne

+0

LogCatに – Gaby

答えて

0

:私はあなたのコードに何かを見て、ただ何も表示しないように、あなたのshopsonmapを疑うことはできません。私が使用しているコードの下にあります。

+0

私の問題は私のクラスShopsOnMapであることがわかりました。私は他のクラスと一緒に試してみるとうまくいきます。しかし、私は今、新しい問題を抱えています。この場合に使用するための新しいクラスを作成すると、NoClassDefFoundエラーが発生します...私は多くのソリューションを検索していますが、私は何も見つけませんでした。このエラーの解決方法をご存知ですか? – Gaby

+0

マニフェストに入れましたか?たぶん、これを答えとしてマークし、いくつかのコード(クラス、呼び出し、マニフェスト)で別の質問を開始してください。 – Nanne

9

私は同じ問題を抱え、マニフェストで私の新しい活動を宣言していないことに気付きました。

2

私はこの質問が非常に古いことを知っていますが、解決策はrequestCodeを変更することでした。明らかに、requestCodeが0のときにはうまくいきません。これは1つの電話機で私のために働いていましたが、他の電話機では機能しませんでした。

+1

ありがとう!それが私の問題を解決しました。 – Trees

3

インテントのアクションとカテゴリを設定する必要があります。

この活動は、アプリケーションのエントリポイントではない場合:

Intent notificationIntent = new Intent(context, ShopsOnMap.class); 
notificationIntent.setAction(Intent.ACTION_MAIN); 
notificationIntent.addCategory(Intent.CATEGORY_LAUNCHER); 
notificationIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 

PendingIntent myIntent = PendingIntent.getActivity(context, 0,notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT); 

は、アプリケーションのエントリポイントがある場合、あなたはそれのように、XMLでそれを持っている:

<activity 
     android:name=".ShopsOnMap" 
     android:theme="@android:style/Theme.NoTitleBar" 
     android:windowSoftInputMode="adjustResize" 
      android:configChanges="orientation" 
     android:screenOrientation="portrait" 
     > 
     <intent-filter> 
      <category android:name="android.intent.category.LAUNCHER" /> 

      <action android:name="android.intent.action.MAIN" /> 
     </intent-filter> 
</activity> 

だから、それだけを追加する必要があります:

Intent notificationIntent = new Intent(context, ShopsOnMap.class); 
notificationIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 

PendingIntent myIntent = PendingIntent.getActivity(context, 0,notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT); 

それは私のために働く。

関連する問題