Android 单击小部件时如何敬酒?

Android 单击小部件时如何敬酒?,android,widget,onclick,toast,Android,Widget,Onclick,Toast,我需要做一个简单的小部件,当点击它时,它会显示一个祝酒词。 我的问题是,我找不到如何获得或创建“oncreate”操作。我看到的示例具有打开web浏览器的待定意图。但是我如何简单地创建它:Toast.makeText(上下文,“已激活”,Toast.LENGTH\u LONG.show()并让它在用户每次单击小部件时发生? 我只是想说清楚,我指的是手机启动器上的一个小部件。不是一个普通的“按钮”小部件等 public class Widget extends AppWidgetProvider

我需要做一个简单的小部件,当点击它时,它会显示一个祝酒词。 我的问题是,我找不到如何获得或创建“oncreate”操作。我看到的示例具有打开web浏览器的待定意图。但是我如何简单地创建它:
Toast.makeText(上下文,“已激活”,Toast.LENGTH\u LONG.show()
并让它在用户每次单击小部件时发生? 我只是想说清楚,我指的是手机启动器上的一个小部件。不是一个普通的“按钮”小部件等

public class Widget extends AppWidgetProvider {
NotificationManager mNotificationManager;
Notification notification;

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



    appWidgetManager.updateAppWidget(appWidgetIds, view);
}
}


谢谢

只需调用Toast.makeText(上下文,“已激活”,Toast.LENGTH_LONG.show()onClick()查看方法中的code>。OnClickListener

更新:
如果您使用
AppWidgetProvider
,那么请检查并发布我认为您缺少显示创建的
Toast
。例如:

Toast.makeText(context, "activated", Toast.LENGTH_LONG).show();
此外,重写自定义
视图
类的
onClick
方法,并在那里弹出toast


试试这个:

button = (Button) findViewById(R.id.buttonToast);

        button.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {

        // Create a piece of toast.
        Toast pieceToast = Toast.makeText(getApplicationContext(), "Test Message", Toast.LENGTH_SHORT);

        // Show the toast.
        pieceToast.show();
    }
这是我的广播接受者课程:

public class IncomingCallReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Bundle bundle = intent.getExtras();
        if(null == bundle)
            return;
        Log.i("IncomingCallReceiver",bundle.toString());
        String state = bundle.getString(TelephonyManager.EXTRA_STATE);
        String registredPhoneNumber;
        Log.i("IncomingCallReceiver","State: "+ state);
        String phonenumber = bundle.getString(TelephonyManager.EXTRA_INCOMING_NUMBER);
        System.out.println("*****Mobile Ringing*******"+phonenumber);
        if(state.equalsIgnoreCase(TelephonyManager.EXTRA_STATE_RINGING))
        {
            registredPhoneNumber = PreferenceConnector.getPhoneNumber(context);
            System.out.println("registredPhoneNumber:  "+registredPhoneNumber);
            System.out.println("phonenumber:   "+phonenumber);
            Log.i("IncomingCallReceiver","Incomng Number: " + phonenumber);
            if(phonenumber.equals(registredPhoneNumber)){
                System.out.println("Entered...");
                String info = "Detect Calls sample application\nIncoming number: " + phonenumber;
                if(isMyServiceRunning(context)){
                    context.stopService(new Intent(context,com.visiomaticamericas.visitormobile.services.LaunchServiceActivity.class));
                    System.out.println("******Service Stopped*********");
                }
                Intent i = new Intent(context,com.services.LaunchServiceActivity.class);
                i.putExtra("delay",500L);
                context.startService(i);
                System.out.println("*****Service Started*****");
                Toast.makeText(context, info, Toast.LENGTH_LONG).show();
            }

        }
    }


}

在这里,我给我的活动课打了电话。。我在我的活动类中设计了小部件。

这可能会有所帮助,这里需要传递上下文并用小部件获取Onclick事件


Toast.makeText(上下文“已激活”,Toast.LENGTH_LONG.show()

各位,我的VS环境是2017年与Xamarin的VS

并使用此功能在设备屏幕上显示消息 如下图所示:

显示信息(“振动按钮按下”)


扩展AppWidgetProvider的类中没有View.onClickListener。只有SetOnClickPendingEvent。你应该在问题中写下你想要处理app_图标点击事件以更清晰。它不是app_图标点击,而是一个小部件点击启动器。我只是想说。正确地表达你的问题。我表达了我的问题,thanx!谢谢,我一秒钟前加的。不是这样。如何在扩展BroadcastReceiver的类中设置“view.setonclicklistener”。这是不可能的。我说的是你的自定义视图类,看看我的更新答案吧。我想这不会让我停滞不前,因为我对android有点陌生,但我不知道如何将“TestButton”与主屏幕上的小部件联系起来?但我会试试看。谢谢。
TestButton
是一个典型的类。目的是向您展示如何在处理自定义视图时覆盖按钮的
onClick
。如何在扩展BroadcastReceiver的类中设置“view.setonclicklistener”。这是不可能的。你还在做button.setOnClickListener!!您不能在AppWidgetProvider中执行此操作!你们中没有人读过评论:)我们不能这样做。。所以,您只需从BroadcastReceiver扩展类的OnReceiveMethod调用activity类。您只需在活动类下设计UI。。请参阅我编辑的问题。在扩展BroadcastReceiver的类中没有“findviewbyid”。这是不可能的。如果您使用的是BroadcastReceiver,则在Activity.And toast的onReceive()方法中的按钮单击事件上发送广播消息。如何在扩展BroadcastReceiver的类中设置“view.setonclicklistener”。这是不可能的。你甚至不能在AppWidgetProvider中执行“findViewById”!再次看到我的问题,它是一个主屏幕小部件!不是普通的按钮。你就是做不到。为什么-1?谁能解释一下这个问题出了什么问题?我想有人不喜欢你最初的问题。好的,谢谢。你帮了我很多。
button = (Button) findViewById(R.id.buttonToast);

        button.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {

        // Create a piece of toast.
        Toast pieceToast = Toast.makeText(getApplicationContext(), "Test Message", Toast.LENGTH_SHORT);

        // Show the toast.
        pieceToast.show();
    }
public class IncomingCallReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Bundle bundle = intent.getExtras();
        if(null == bundle)
            return;
        Log.i("IncomingCallReceiver",bundle.toString());
        String state = bundle.getString(TelephonyManager.EXTRA_STATE);
        String registredPhoneNumber;
        Log.i("IncomingCallReceiver","State: "+ state);
        String phonenumber = bundle.getString(TelephonyManager.EXTRA_INCOMING_NUMBER);
        System.out.println("*****Mobile Ringing*******"+phonenumber);
        if(state.equalsIgnoreCase(TelephonyManager.EXTRA_STATE_RINGING))
        {
            registredPhoneNumber = PreferenceConnector.getPhoneNumber(context);
            System.out.println("registredPhoneNumber:  "+registredPhoneNumber);
            System.out.println("phonenumber:   "+phonenumber);
            Log.i("IncomingCallReceiver","Incomng Number: " + phonenumber);
            if(phonenumber.equals(registredPhoneNumber)){
                System.out.println("Entered...");
                String info = "Detect Calls sample application\nIncoming number: " + phonenumber;
                if(isMyServiceRunning(context)){
                    context.stopService(new Intent(context,com.visiomaticamericas.visitormobile.services.LaunchServiceActivity.class));
                    System.out.println("******Service Stopped*********");
                }
                Intent i = new Intent(context,com.services.LaunchServiceActivity.class);
                i.putExtra("delay",500L);
                context.startService(i);
                System.out.println("*****Service Started*****");
                Toast.makeText(context, info, Toast.LENGTH_LONG).show();
            }

        }
    }


}
   private void DisplayMessage(string DisplayMsgText)
    {
        Toast.MakeText(this.ApplicationContext, DisplayMsgText, ToastLength.Short).Show();
    }