मेरी ListProvider
वर्ग कि RemoteViewsFactory
मैं नीचे निम्नलिखित कोड putted है लागू करता है:डेटा कैसे पास करें और विजेट से गतिविधि कैसे खोलें? [एंड्रॉयड]
@Override
public RemoteViews getViewAt(int position) {
RemoteViews rv = new RemoteViews(mContext.getPackageName(), R.layout.list_row);
rv.setTextViewText(R.id.heading, merch_name);
rv.setTextViewText(R.id.content, teaser);
Bundle extras = new Bundle();
extras.putInt(WidgetProvider.EXTRA_ITEM, position);
extras.putString(WidgetProvider.MERCHANT_ITEM, mWidgetItems.get(position).merchant_id);
Intent fillInIntent = new Intent();
fillInIntent.putExtras(extras);
rv.setOnClickFillInIntent(R.id.llRow, fillInIntent);
return rv;
}
मैं अपने WidgetProvider
की onReceive
यह सही आईडी है में लॉग डाल जब मैं क्लिक किया, लेकिन बाद गतिविधि इसे खोलने सही आईडी नहीं है जहां इसे extras
में रखा गया है। समय भी है कि यह प्रदान किए गए Activity
को नहीं खोलता है और बस अपना MainActivity
खोलता है। ऐसा तब होता है जब मैंने अपना ऐप recently open app
से हटा दिया और फिर widget
का उपयोग किया।
यहाँ मेरी WidgetProvider
public class WidgetProvider extends AppWidgetProvider {
public static final String TOAST_ACTION = "my.packagename.TOAST_ACTION";
public static final String MERCHANT_ITEM = "my.packagename.MERCHANT_ITEM";
@Override
public void onReceive(Context context, Intent intent) {
AppWidgetManager mgr = AppWidgetManager.getInstance(context);
if (intent.getAction().equals(TOAST_ACTION)) {
int appWidgetId = intent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID,
AppWidgetManager.INVALID_APPWIDGET_ID);
Intent goToDetails = new Intent(context, DetailsActivity.class);
goToDetails.putExtra(Constants.MERCHANT_ID, intent.getStringExtra(MERCHANT_ITEM));
goToDetails.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(goToDetails);
super.onReceive(context, intent);
}
में onReceive
के लिए मेरे कोड है और यह है कि मैं कैसे में आईडी प्राप्त मेरी DetailsActivity
public class DetailsActivity extends Activity {
String merchantID;
@Override
protected void onCreate(Bundle savedState) {
super.onCreate(savedState);
setContentView(R.layout.detailsactivity);
Bundle extras = getIntent().getExtras();
if (extras != null) {
merchantID = extras.getString(Constants.MERCHANT_ID);
}
यह कैसे हल करने के लिए? पहले ही, आपका बहुत धन्यवाद।