удалить уведомление от Android - PullRequest
1 голос
/ 03 ноября 2011

Я хочу разрешить удаление моего уведомления в активности, которая открывается после нажатия на нее в панели уведомлений.Я использую следующий код:

nm = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
        Log.i(TAG, "after NotificationManager");
        Intent intent = new Intent(this,test.class);
        intent.putExtra("title", title);
        intent.putExtra("subject", subject);
        intent.putExtra("notificationid", count);
        Log.i(TAG, title);
        Log.i(TAG, subject);
        PendingIntent pi = PendingIntent.getActivity(this, count, intent,0);



        Notification n = new  Notification(R.drawable.icon,subject,System.currentTimeMillis());

        n.setLatestEventInfo(this, title, subject, pi);
        n.defaults = Notification.DEFAULT_LIGHTS;

        nm.notify(count, n);

И мой test.java выглядит так:

public class test extends Activity {


    TextView Title;
    TextView Subject;
    Button Clear;
    protected int notificationid;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.test);  

        String title="";
        String subject="";



        Bundle extras = getIntent().getExtras();

        if(extras !=null) {
             title = extras.getString("title");
             subject = extras.getString("subject");
             notificationid = extras.getInt("notificationid");
        }
        Title = (TextView) findViewById(R.id.Title);
        Subject = (TextView) findViewById(R.id.Subject);
        Title.setText(title);
        Subject.setText(subject);
      Clear.setOnClickListener(new View.OnClickListener()
        {
            public void onClick(View view)
            {     

                  NotificationManager nm ;
                 nm = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
                Log.i(getClass().getSimpleName(), " onClick inside test caled....");
                nm.cancel(notificationid);


            }
        });

    }
}

Но приложение неожиданно закрывается.Кто-нибудь может мне помочь в этом?Спасибо !!

Ответы [ 4 ]

2 голосов
/ 03 ноября 2011

Вы пропускаете

Clear=(Button) findViewById(R.id.ClearButtonId); 

это в вашем test классе?

Это должно быть проблемой.Возможно, вы получаете NullPointerException, поскольку вы не проанализировали компонент Button и пытаетесь использовать его напрямую.

1 голос
/ 03 ноября 2011

Не имея возможности увидеть ваш вывод LogCat, трудно сказать, в чем именно заключается ошибка, но, посмотрев на код (это, конечно, может быть неправильно, если вы вставили только частичный код), вы не инициализируете Ваша notificationid переменная в случае, когда extras == null. Если вы разрабатываете с Eclipse, загляните в представление LogCat и найдите трассировку стека ошибок.

Отредактируйте, увидев ответ Кайла: что он сказал о LogCat; -)

1 голос
/ 03 ноября 2011

Какая ошибка связана с неожиданным кодом? Можете ли вы сообщить подробности об исключении, вызвавшем сбой?

Вы используете LogCat? Если нет, проверьте http://developer.android.com/guide/developing/tools/logcat.html. Чтобы просмотреть журналы logcat непосредственно в командной строке, откройте командную строку и перейдите в каталог, где находится ваш Android SDK. Запустите adb logcat. Вы должны начать видеть распечатку ошибок, предупреждений и т. Д., Генерируемых logcat.

Как только вы сможете увидеть, в чем проблема, с помощью logcat (она сообщит вам NullPointerException, ResourceNotFoundException и т. Д. И строку кода, вызвавшего проблему), если вы не можете выяснить источник сбоя из затем вставьте сюда информацию об ошибке.

0 голосов
/ 31 марта 2013

Попробуйте использовать FLAG_AUTO_CANCEL:

n.flags |= Notification.FLAG_AUTO_CANCEL;

Бит, который нужно поразрядно вставить в поле флагов, которое должно быть установлено, если уведомление будет отменено при щелчке пользователем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...