0

我正在创建一个简单的小部件,通过这个小部件我想打开我的 mainactivity。

我正在从我的小部件类发送一个唯一键来检查我的 mainactivity 是否通过小部件调用。

但是只要我点击我的小部件,我的主要活动就会强制关闭。

这是我的小部件类的代码...

@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
        int[] widgets) {
    // TODO Auto-generated method stub
    int numofWidgets = widgets.length;
    for(int i=0;i<numofWidgets;i++){
        int widget = widgets[i];
        Intent in = new Intent(context, EmergencyButton.class);
        in.putExtra("uniquevalue", "widget");
        PendingIntent pendingintent = PendingIntent.getActivity(context, 0, in, 0);
        RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widgetlayout);
        views.setOnClickPendingIntent(R.id.button, pendingintent);
        appWidgetManager.updateAppWidget(widget, views);
    }
}

这是我的 mainactivity 代码,我在其中检查调用是否来自小部件

   @Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.mainactivity); 
     Intent intentwidget = this.getIntent();
    if(intentwidget !=null)
    {
      String widgetdata = "nothing";
      widgetdata = intentwidget.getExtras().getString("uniquevalue");//this is line 29 
      if(widgetdata.equals("widget"))
        {

        }
    }

}

这是我的日志猫

11-04 14:57:14.361: E/AndroidRuntime(1701): FATAL EXCEPTION: main
11-04 14:57:14.361: E/AndroidRuntime(1701): java.lang.RuntimeException: Unable to start activityComponentInfo{com.appsionlabs.googlemapv2/com.appsionlabs.googlemapv2.EmergencyButton}: java.lang.NullPointerException
11-04 14:57:14.361: E/AndroidRuntime(1701):     at          android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
11-04 14:57:14.361: E/AndroidRuntime(1701):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
11-04 14:57:14.361: E/AndroidRuntime(1701):     at android.app.ActivityThread.access$1500(ActivityThread.java:117)
11-04 14:57:14.361: E/AndroidRuntime(1701):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
11-04 14:57:14.361: E/AndroidRuntime(1701):     at android.os.Handler.dispatchMessage(Handler.java:99)
11-04 14:57:14.361: E/AndroidRuntime(1701):     at android.os.Looper.loop(Looper.java:123)
11-04 14:57:14.361: E/AndroidRuntime(1701):     at android.app.ActivityThread.main(ActivityThread.java:3683)
11-04 14:57:14.361: E/AndroidRuntime(1701):     at java.lang.reflect.Method.invokeNative(Native Method)
11-04 14:57:14.361: E/AndroidRuntime(1701):     at java.lang.reflect.Method.invoke(Method.java:507)
11-04 14:57:14.361: E/AndroidRuntime(1701):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
11-04 14:57:14.361: E/AndroidRuntime(1701):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
11-04 14:57:14.361: E/AndroidRuntime(1701):     at dalvik.system.NativeStart.main(Native Method)
11-04 14:57:14.361: E/AndroidRuntime(1701): Caused by: java.lang.NullPointerException
11-04 14:57:14.361: E/AndroidRuntime(1701):     at com.appsionlabs.googlemapv2.EmergencyButton.onCreate(EmergencyButton.java:29)
11-04 14:57:14.361: E/AndroidRuntime(1701):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
11-04 14:57:14.361: E/AndroidRuntime(1701):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
4

3 回答 3

2

你有这个

 et1.setText(widgetdata);

但是et1没有初始化。初始化et1.

编辑:

使用下面的并尝试

  Bundle extras = this.getIntent().getExtras();
  if (extras != null) {
        widgetdata = extras.getString("uniquevalue");
  }
于 2013-11-04T09:51:22.237 回答
1

在下面试试这个,而不是 Intent intentwidget = this.getIntent();

Bundle extras = this.getIntent().getExtras();

        if (extras != null) {
            widgetdata = extras.getString("uniquevalue");
        }

不同的是Bundle

于 2013-11-04T10:04:49.530 回答
0

et1 在该位置为空。

获取 et1 id,然后设置文本。

于 2013-11-04T09:56:32.800 回答