2016-10-12 4 views
0

Как открыть определенный фрагмент при нажатии на виджет главного экрана, я уже могу открыть 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); 
} 

Значит, любая идея?

ответ

3

Почему бы не передать некоторый флаг (Bundle) в Intent и проверить его в Activity onCreate или onNewIntent, и если установлено значение true (или любое значение), откройте Fragment?

Widget:

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); 

активность:

Bundle extras = getIntent().getExtras(); 
if (extras != null) { 
    value_type value = extras.get("key");   
} 

Помните, что вы должны проверить его как в OnCreate и onNewIntent.

+0

Спасибо, это действительно полезно. –

 Смежные вопросы

  • Нет связанных вопросов^_^