2015-02-17 3 views
0

Мне нужно изменить переменную только тогда, когда пользователь нажимает на уведомление. Я попытался использовать SharedPreferences в действии после того, как уведомление перенаправлено на него, а затем повторите эту переменную в следующий раз, когда она мне понадобится, но я не знаю, почему она не работает.Действие по уведомлению нажато

Кто-нибудь знает, где именно срабатывает onClick of Notification?

Мое уведомление определяется следующим образом:

protected Notification createNotification() { 

    CharSequence title = "New notification"; 
    CharSequence content = ""; 

    Notification notification = new Notification(R.drawable.app_icon, 
      title, System.currentTimeMillis()); 

    notification.flags = Notification.FLAG_AUTO_CANCEL; 

    PendingIntent contentIntent = createPendingIntent(); 
    notification.setLatestEventInfo(this, title, content, contentIntent); 
    return notification; 
} 

protected PendingIntent createPendingIntent() { 
     Intent intent = new Intent(this, MainActivity.class); 
     PendingIntent contentIntent = PendingIntent.getActivity(this, 0, 
       intent, 0); 
     return contentIntent; 
    } 

protected void showNotification() { 
    try { 
     mNM.notify(NOTIFICATION_ID, createNotification()); 
    } catch (Exception e) { 

    } 
} 

Спасибо.

+0

Изменить переменную в onCreate 'MainActivity' Activity, потому что это действие начинается, когда onClick of Notification активируется –

+0

Именно там я попытался его изменить, но когда уведомление снова запущено, переменная остается такой же, как раньше. – Phantom

+0

Возможно, что действие выполняется в фоновом режиме при нажатии второго раза на уведомление –

ответ

0

Если вы используете PendingIntent при нажатии на уведомление, вы можете открыть его, когда эта деятельность открывается с намерением, вы можете сделать способ вызова методом. Если вы сначала добавили атрибут ниже в свой тег активности в AndroidManifest.xml.

android:launchMode="singleTop" 

Добавьте этот метод в свою деятельность. Этот метод запускается, когда вы вызываете намерение к активности. Это где

@Override 
protected void onNewIntent(Intent intent) { 
     super.onNewIntent(intent); 
} 

Альтернативным решением было бы создать пользовательское уведомление с вашим собственным макете и использовать onClickListeners на элементах.

+0

Я сделаю еще несколько попыток с моей текущей конфигурацией, потому что, похоже, onNewIntent тоже не работает. Тогда я, вероятно, выберу вам альтернативное решение. – Phantom

+0

@Phantom Проверьте это, это может помочь http://stackoverflow.com/questions/16168553/create-custom-notification-android – timbillstrom

+0

Спасибо за поддержку. Мне удалось решить проблему. Я избавился от логической переменной подтверждения, когда пользователь нажал на уведомление и изменил переменную, в которой меня интересовало напрямую. – Phantom

Смежные вопросы