[英]Implementation function inside OnClickListener - Android
我想在我的函數OnClick中將此方法稱為“ CriarNotificacao”-> CreateNotification,但收到一個我無法實現的錯誤,我的朋友告訴我創建一個匿名類,我不理解“太多”。我該怎么做? 有一個簡單的方法嗎?
package br.com.notification;
import android.app.Activity;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class CreateNotificationActivity extends Activity
{
Button btnNotifica;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView text = new TextView(this);
text.setText("Notificação disparada.");
setContentView(R.layout.main);
// Texto que aparecerá na barra de status (chamada para a notificação)
String tickerText = "Você recebeu uma mensagem.";
// Detalhes da notificação
CharSequence titulo = "André";
CharSequence mensagem = "Exemplo de notificação";
// Exibe a notificação
//criarNotificacao(this, tickerText, titulo, mensagem, NotificationReceiverActivity.class);
//Começar a Brincar AQUI!
btnNotifica = (Button) findViewById(R.id.button1);
btnNotifica.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
//CALL NOTIFICATION HERE
}
});
}
// Exibe a notificacao
public void criarNotificacao(Context context, CharSequence mensagemBarraStatus,
CharSequence titulo, CharSequence mensagem, Class activity) {
// Recupera o serviço do NotificationManager
NotificationManager nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
Notification n = new Notification(R.drawable.jo, mensagemBarraStatus, System.currentTimeMillis());
// PendingIntent para executar a Activity se o usuário selecionar a notificação
PendingIntent p = PendingIntent.getActivity(this, 0, new Intent(this, activity), 0);
// Flag utilizada para remover a notificação da barra de status
// quando o usuário clicar nela
n.flags |= Notification.FLAG_AUTO_CANCEL;
// Informações
n.setLatestEventInfo(this, titulo, mensagem, p);
// Espera 100ms e vibra por 250ms, espera por mais 100ms e vibra por 500ms
n.vibrate = new long[] { 100, 250, 100, 500 };
//Id da Notificacao
nm.notify(R.string.app_name, n);
}
}
我想您得到的錯誤是因為您試圖在onClick
的范圍內調用this
,而不會導致當前的Context
。
您需要做的是在點擊偵聽器外部實例化一個最終變量,以存儲當前上下文。
同樣,所有其他非全局變量也需要實例化為final。 為了在onClick處理程序中使用。
// Texto que aparecerá na barra de status (chamada para a notificação)
final String tickerText = "Você recebeu uma mensagem.";
// Detalhes da notificação
final CharSequence titulo = "André";
final CharSequence mensagem = "Exemplo de notificação";
// Current Context
final Context context = this;
//Começar a Brincar AQUI!
btnNotifica = (Button) findViewById(R.id.button1);
btnNotifica.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
criarNotificacao(context, tickerText, titulo, mensagem, NotificationReceiverActivity.class);
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.