Android Widget Bundle getString显示为null

时间:2014-03-12 15:20:48

标签: android string android-intent widget bundle

我正在尝试使用小部件来显示通过意图接收的文本。

当我构建应用程序并在我的Widget类中使用断点来跟踪代码时,类会毫无问题地接收字符串。在调试时我将小部件添加到主屏幕并使用断点我再次遵循代码,但这次它将字符串显示为null。

构建并运行应用 - > String =“Hello”,Add Widget - > String = null

我的活动课程:

Intent intent = new Intent(this, ArtistWidget.class);
        String test = "Hello";
        Bundle extras = new Bundle();
        extras.putString("artist", test);
        intent.putExtras(extras);
        sendBroadcast(intent);

在我的小部件类中:

public class ArtistWidget extends AppWidgetProvider
{
    private ArrayList<JSONObject> artistList = new ArrayList<JSONObject>();
    private String data;    
    RemoteViews remoteViews;


@Override
public void onReceive(Context context, Intent intent) {    


    data = intent.getStringExtra("artist");


    super.onReceive(context, intent);
  }



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

        ComponentName artistWidget;

        remoteViews = new RemoteViews( context.getPackageName(), R.layout.artist_widget );
        artistWidget = new ComponentName( context, ArtistWidget.class );
        remoteViews.setTextViewText( R.id.widget_textview, "T" + data + "D");  
        appWidgetManager.updateAppWidget( artistWidget, remoteViews );   
    }

在onReceive函数中我试过:

    getPrevData = intent.getExtras();
    data = getPrevData.getString("artist"); //Crashes here

但是当我将小部件放在主屏幕上时它会崩溃。

1 个答案:

答案 0 :(得分:0)

为什么不直接获取字符串?

intent.getStringExtra("artist");