gpt4 book ai didi

java - OnClickListener 内部的实现函数 - Android

转载 作者:行者123 更新时间:2023-12-02 05:47:17 26 4
gpt4 key购买 nike

我想将此方法称为“CriarNotificacao”-> CreateNotification,在我的函数 OnClick 中,但收到一个错误,我无法实现它,我的 friend 告诉我创建一个匿名类,我不明白“太多” “.. 我该怎么做?有没有简单的方法?

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,这不会导致当前的 上下文

您需要做的是在点击监听器之外实例化一个最终变量来存储当前的上下文。

此外,所有其他非全局变量也需要实例化为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);
}
});

关于java - OnClickListener 内部的实现函数 - Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23939340/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com