【发布时间】:2013-09-28 04:09:47
【问题描述】:
我有一个小部件,我想在用户单击小部件时打开一个新窗口。 有人能告诉我怎么做吗,你能给我一些代码吗? 我目前正在学习如何使用 java 在 Eclipse 中制作 android 应用程序。 提前致谢!
【问题讨论】:
-
正确搜索,你会得到很多教程。
标签: android eclipse button widget
我有一个小部件,我想在用户单击小部件时打开一个新窗口。 有人能告诉我怎么做吗,你能给我一些代码吗? 我目前正在学习如何使用 java 在 Eclipse 中制作 android 应用程序。 提前致谢!
【问题讨论】:
标签: android eclipse button widget
您可以通过添加使任何视图可点击
android:clickable="true"
到 xml 或通过调用
view.setClickable(true);
在java中。 见documentation
然后您可以分配一个on click listener 来执行您想要的任何操作。
【讨论】:
更改扩展 AppWidgetProvider 的类。您可以看到 basic example 用于创建简单的小部件。因此您可以在扩展 AppWidgetProvider 的类中检测小部件的点击事件。在这里,MyWidgetProvider 是一个将在后台运行的服务。
public class MyWidgetProvider extends AppWidgetProvider {
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widgetview);
remoteViews.setOnClickPendingIntent(R.id.widgetlayout1, buildButtonPendingIntent(context));
pushWidgetUpdate(context, remoteViews);
}
public static PendingIntent buildButtonPendingIntent(Context context) {
Log.d("MyWidgetProvider", "click");
Intent intent = new Intent(context,secondactivity.class);// Add secondactivity to Manifest
context.startActivity(intent);
return PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
}
我已经看到你正在使用的link。你可以将上面的代码放在你的LovelyBatteryWidget 类中。
编辑
public static void pushWidgetUpdate(Context context, RemoteViews remoteViews) {
ComponentName myWidget = new ComponentName(context, MyWidgetProvider.class);
AppWidgetManager manager = AppWidgetManager.getInstance(context);
manager.updateAppWidget(myWidget, remoteViews);
}
查看this教程供您参考。
【讨论】:
在我的代码中为新窗口创建另一个活动 seconhdActivity
在小部件的 onclickevent 中使用我在代码中使用的 Intent
Intent mIntent = new Intent(MainActivity.this,
SecondActivity.class);
startActivity(mIntent);
================================================ =============================
公共类 MainActivity 扩展 Activity {
Button btnButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnButton = (Button) findViewById(R.id.button1);
btnButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent mIntent = new Intent(MainActivity.this,
SecondActivity.class);
startActivity(mIntent);
}
});
}
}
【讨论】: