- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在尝试创建一个小部件按钮以直接通过主屏幕运行应用程序 Activity 。当我根据 my_button.xml 文件按下它时,小部件会更改图像。但是当我点击它时无法创建事件。
我需要知道如何调用“onPress”事件(例如)以便在我的主要 Activity 中调用方法。我会很感激你的帮助
我附上了相关文件。
widget.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_height="wrap_content" android:layout_width="wrap_content">
<Button
android:id="@+id/button_one"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:background="@drawable/my_button" />
</LinearLayout>
my_button.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/btn1"
android:state_pressed="true" />
<item android:drawable="@drawable/btn2"
android:state_focused="true" />
<item android:drawable="@drawable/btn3" />
</selector>
myWidgetProvider.java
package com.callsift.activity;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import android.widget.RemoteViews;
import android.widget.Toast;
public class MyWidgetProvider extends AppWidgetProvider {
public static String ACTION_WIDGET_CONFIGURE = "ConfigureWidget";
public static String ACTION_WIDGET_RECEIVER = "ActionReceiverWidget";
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
Toast.makeText(context, "onUpdate", Toast.LENGTH_SHORT).show();
RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget);
Intent configIntent = new Intent(context, CallSift.class);
configIntent.setAction(ACTION_WIDGET_CONFIGURE);
Intent active = new Intent(context, MyWidgetProvider.class);
active.setAction(ACTION_WIDGET_RECEIVER);
active.putExtra("msg", "Message for Button 1");
//PendingIntent actionPendingIntent = PendingIntent.getBroadcast(context, 0, active, 0);
PendingIntent configPendingIntent = PendingIntent.getActivity(context, 0, configIntent, 0);
// remoteViews.setOnClickPendingIntent(R.id.button_one, actionPendingIntent);
remoteViews.setOnClickPendingIntent(R.id.button_one, configPendingIntent);
appWidgetManager.updateAppWidget(appWidgetIds, remoteViews);
}
@Override
public void onReceive(Context context, Intent intent) {
// v1.5 fix that doesn't call onDelete Action
final String action = intent.getAction();
if (AppWidgetManager.ACTION_APPWIDGET_DELETED.equals(action)) {
final int appWidgetId = intent.getExtras().getInt(
AppWidgetManager.EXTRA_APPWIDGET_ID,
AppWidgetManager.INVALID_APPWIDGET_ID);
if (appWidgetId != AppWidgetManager.INVALID_APPWIDGET_ID) {
this.onDeleted(context, new int[] { appWidgetId });
}
} else {
// check, if our Action was called
if (intent.getAction().equals(ACTION_WIDGET_RECEIVER)) {
Toast.makeText(context, "blblbl", Toast.LENGTH_SHORT).show();
String msg = "null";
try {
msg = intent.getStringExtra("msg");
// Toast.makeText(context, "test", Toast.LENGTH_SHORT).show();
} catch (NullPointerException e) {
Log.e("Error", "msg = null");
}
Toast.makeText(context, "ttttt", Toast.LENGTH_SHORT).show();
PendingIntent contentIntent = PendingIntent.getActivity(context, 0, intent, 0);
NotificationManager notificationManager = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE);
Notification noty = new Notification(R.drawable.icon, "Button 1 clicked", System.currentTimeMillis());
noty.setLatestEventInfo(context, "Notice", msg, contentIntent);
notificationManager.notify(1, noty);
} else {
// do nothing
}
super.onReceive(context, intent);
}
}
}
androidmainfast.xml - 相关部分
<!-- Broadcast Receiver that will process AppWidget updates -->
<receiver android:name=".MyWidgetProvider" android:label="@string/app_name">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
<!-- Broadcast Receiver that will also process our self created action -->
<action android:name="com.callsift.activity.MyWidgetProvider.ACTION_WIDGET_RECEIVER"/>
</intent-filter>
<meta-data android:name="android.appwidget.provider" android:resource="@xml/button_widget_provider" />
</receiver>
最佳答案
您不能让应用小部件“调用“onPress”事件(例如)以调用我的主要 Activity 中的方法”。应用程序小部件可以调用 PendingIntent
,这意味着它可以启动 Activity 、启动服务或发送广播——仅此而已。它不能调用任意其他对象中的方法。
最接近的是使用独特的 Intent
在getActivity()
PendingIntent
(例如,自定义操作字符串),使用 setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP)
在 Intent
上尝试将您的 Activity 的现有实例向前推进,然后检查您的特殊 Intent
在两个onCreate()
和 onNewIntent()
你的 Activity ,做任何你想做的特别的事情。
关于java - 新闻事件上的android小部件按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4722517/
我最近开始接触网络编程,我完全不知所措。我已经开始学习基础知识、html、css 和 javascript。在我的第一个网页上,我有兴趣为我发布更新的地方实现一个下拉新闻部分。我能举出的最好的例子就是
我的 Wordpress 主题在我放大评论框时没有扩展其内容区域,因此整个内容都在页脚上。页脚保持固定在页面底部,但当我展开评论框时不会自行向下推... 我尝试阅读其他问题,但我没有解决那个问题。 代
我正在运行 TYPO3 V6 和最新版本的 tx_news(不是 tt_news),当我尝试更改 LIST 显示的排序顺序时,插件中的设置不会覆盖 Typoscript 设置。似乎没有办法更改 Lis
根据 Google 允许您的文章/新闻出现在 Google 新闻中: Display a three-digit number. The URL for each article must conta
我想问一下是否可以使用表单提交后发送到用户邮件的唯一代码创建注册,我不确定如何正确地做。 for example : The user enters his email and the system
我目前正在使用在 Google 新闻语料库上训练的 Word2Vec 模型(来自 here)由于这只针对 2013 年之前的新闻进行训练,因此我需要根据 2013 年之后的新闻更新向量并在词汇表中添加
所有的麻烦都开始了,我无法按画廊的右箭头(右箭头出现在图片中) 我看到只有当我将栏移到右侧时,我才能点击箭头。 如您所见,我在 Firefox 中打开了 F12,指向了网站的右侧部分。 我看到它是空的
我有一些代码运行良好,它只是添加了一个水平新闻提要(或我列出的任何信息)它运行良好,没有闪烁,但是当我向它添加更多数据时,它似乎需要一段时间才能加载并且速度变化?我还有很多信息要添加到其中,但我不想在
我有点坚持 RewriteRule 301,从旧新闻 ID 更改为新新闻 ID 这是我尝试过的: RewriteRule ^/news/0(.*)$ /news/$1 [L,R=301] 假设新闻 U
我对 Google 新闻 RSS 提要的使用有疑问。 Google 新闻帮助说明了这一点: Why Google might block an RSS feed In some cases, Goog
我想在我的网站上加入新闻,但主要主题必须是“书籍”或“作者”等。基本上,我需要选择我提到的这两个或作者姓名等自定义主题。 但我不知道怎么做,因为文档真的很差(或者我找不到)。 添加它的查询参数是什么?
最好的方法是什么? 我想解析新闻,然后使用关键字之类的内容过滤它们并找到匹配项。 有人已经这样做了吗?而且,这是合法的吗? 最佳答案 您可以使用 google 新闻网址 http://news.goo
我有一个获取热门新闻头条的 js 函数。它已按 promise 返回,但我无法访问这些文章。这是我的代码 function news09() { var url = 'https://ne
我想让我的 TableView 加载更多动画,例如 Facebook 新闻,并在底部显示动画指示器事件。 有什么指导可以帮助我做到这一点吗?谢谢。 最佳答案 有几种方法可以做到这一点 在最后一个 in
我正在为我的网站创建一个新闻系统。我有一个主页 {index.php}(显示所有文章)和一个文章页面 (article.php) 我遇到的问题是在文章页面上选择内容。 当你点击 index.php 上
我已成功调用新闻 API 并将结果放入 DataFrame,但仅限于第 1 页。 def get_articles(keyword): all_articles = newsapi.get_eve
我有一个适合我网站的新闻 slider ,我想使用它,但我遇到了一个小问题。完成 HTML 和 CSS 后,我需要旋转“展示柜”,现在我已经尝试使用 Jquery 的不同指令,但一点运气都没有。有人可
因此,我必须根据编写的 javascript 文件(如下)创建搜索查询,并且还必须使用此 URL 来创建搜索查询。在 URL 末尾,您可以添加任何您喜欢的搜索词。例如,我们将搜索食物:https://
我在 TYPO3 8.7.13 中使用来自 Georg Ringer 的新闻扩展。 如果没有选择图像进行预览,扩展程序会显示一个虚拟图像。是否可以改用文章中的第一张图片? 谢谢 最佳答案 当然,您需要
我是typo3 的新手,我需要有关新闻扩展和$TCA 配置的帮助。 我做了一个名为“Activité”的扩展,它从 News 扩展而来。这很顺利。我创建了一些自定义字段,并且能够从“常规”选项卡中已经
我是一名优秀的程序员,十分优秀!