如何在单击主屏幕小部件时打开特定片段

Ahm*_*zat 1 android android-widget android-studio

如何在单击主屏幕小部件时打开特定片段,我已经可以打开一个Activity但我不知道如何从小部件打开片段这是我的小部件类

public class MyWidget extends AppWidgetProvider {
ComponentName watchWidget;
RemoteViews remoteViews;
private static final String SYNC_CLICKED = "automaticWidgetSyncButtonClick";

void updateAppWidget(Context context, AppWidgetManager appWidgetManager,
                     int appWidgetId) {



    remoteViews = new RemoteViews(context.getPackageName(), R.layout.My_widgets);
    watchWidget = new ComponentName(context, MyWidget.class);
    remoteViews.setTextViewText(R.id.appwidget_text,"Widget Example");
    // start Activity from the widget

    Intent configIntent = new Intent(context, MainActivity.class);
    PendingIntent configPendingIntent = PendingIntent.getActivity(context, 0, configIntent, 0);
    remoteViews.setOnClickPendingIntent(R.id.widget_container, configPendingIntent);
    appWidgetManager.updateAppWidget(watchWidget, remoteViews);
}
Run Code Online (Sandbox Code Playgroud)

那么任何想法?

小智 5

为什么不将一些标志(Bundle)传递给Intent并在Activity onCreate或onNewIntent中检查它,如果设置为true(或任何值),打开Fragment?

小工具:

Intent configIntent = new Intent(context, MainActivity.class);
configIntent.putExtra("key", value);
configIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent configPendingIntent = PendingIntent.getActivity(context, 0, configIntent, 0);
Run Code Online (Sandbox Code Playgroud)

活动:

Bundle extras = getIntent().getExtras();
if (extras != null) {
    value_type value = extras.get("key");        
}
Run Code Online (Sandbox Code Playgroud)

请记住,您必须在onCreate和onNewIntent中进行检查.