Как использовать функцию тостов? - PullRequest
0 голосов
/ 16 февраля 2020

Я только начал изучать Android Студия. Я хочу отобразить уведомление о тосте, нажав кнопку на виджете. Однако при использовании функции getApplicationContext () возникает ошибка. Можете ли вы сказать мне, как это исправить? Другие вещи, в том числе getBaseContext (), были такими же ... Сообщение об ошибке было "Не удается разрешить метод" getApplicationContext () "" Я не говорил по-английски sh, поэтому я использовал Google Translator .... I извините, если вы не можете понять ...

package com.jhjsapp.widget;

import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.Context;
import android.view.View;
import android.widget.RemoteViews;
import android.widget.Toast;

/**
 * Implementation of App Widget functionality.
 */
public class TestWidget extends AppWidgetProvider {

    static void updateAppWidget(Context context, AppWidgetManager appWidgetManager,
                                int appWidgetId) {

        CharSequence widgetText = context.getString(R.string.appwidget_text);
        // Construct the RemoteViews object
        RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.test_widget);
        views.setTextViewText(R.id.appwidget_text, widgetText);

        // Instruct the widget manager to update the widget
        appWidgetManager.updateAppWidget(appWidgetId, views);
    }

    @Override
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
        // There may be multiple widgets active, so update all of them
        for (int appWidgetId : appWidgetIds) {
            updateAppWidget(context, appWidgetManager, appWidgetId);
        }
    }

    @Override
    public void onEnabled(Context context) {
        // Enter relevant functionality for when the first widget is created
    }

    @Override
    public void onDisabled(Context context) {
        // Enter relevant functionality for when the last widget is disabled
    }

    public void butcli(View view){
        Toast.makeText(getApplicationContext(),"버튼 눌림", Toast.LENGTH_SHORT).show();
    }
}

Это JAVA код

введите описание изображения здесь

Ответы [ 2 ]

0 голосов
/ 16 февраля 2020

сначала создайте глобальную переменную

private Context context;

, затем инициализируйте контекст, добавив эту строку в updateAppWidget () и onUpdate () и onEnabled () и onDisabled ();

this.context=context;

затем используйте тост, как:

Toast.makeText(context,"버튼 눌림", Toast.LENGTH_SHORT).show();
0 голосов
/ 16 февраля 2020

Невозможно отобразить сообщение Toast, используя getApplicationContext(), поскольку виджет расширяет AppWidgetProvider . Таким образом, вы не можете получить текущий контекст.

Вы можете попробовать что-то вроде этого:

public class testWidget extends AppWidgetProvider{

@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {

final int N = appWidgetIds.length;

for (int i=0; i<N; i++) {
    int appWidgetId = appWidgetIds[i];

    Intent intent = new Intent(context, MainPage.class);
    PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0);

    RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widgetlayout);
    views.setOnClickPendingIntent(R.id.button1, pendingIntent);

    appWidgetManager.updateAppWidget(appWidgetId, views);
   }
}

@Override
public void onReceive(Context context, Intent intent) {   
    super.onReceive(context, intent);   
    Toast.makeText(context, "Button Clicked", Toast.LENGTH_SHORT).show();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...