Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java OnClickListener内部的实现功能-Android_Java_Android - Fatal编程技术网

Java OnClickListener内部的实现功能-Android

Java OnClickListener内部的实现功能-Android,java,android,Java,Android,我想在我的函数OnClick中调用这个方法“criarnotificao”->CreateNotification,但得到一个错误,我无法实现它,我的朋友告诉我创建一个匿名类,我不太理解“太多”。。我怎么做?有没有一个简单的方法 package br.com.notification; import android.app.Activity; import android.app.Notification; import android.app.NotificationManager; imp

我想在我的函数OnClick中调用这个方法“criarnotificao”->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
,这不会导致当前的
上下文

您需要做的是在click listener之外实例化最后一个变量来存储当前上下文

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

在实现Button.OnClickListener时-这是匿名类实现。但是你得到的错误是什么?上下文“get error”找不到符号,符号:变量context“它是什么?”试试@ABFORCE说的;用
CreateNotificationActivity替换
context
。这也会起作用。伙计们,非常感谢^^