これは非常にシンプルなので、申し訳ありませんがアンドロイドプログラミングに関する私の足を濡らしています。クリックしたテキストビューに応じてアプリウィジェットからアクティビティにデータを渡す
私のアプリウィジェットは、いくつかの動的に追加されたテキストビューで構成されています。それぞれのテキストビューは、どちらがクリックされたかに基づいて変化するインデックスで同じアクティビティを起動します。正しいインデックスを取得することは、私が現在問題を抱えていることです。以下は
は、私はウィジェットを作成するために使用するコードです:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle bundle = getIntent().getExtras();
if(bundle != null) {
int Index = bundle.getInt(com.georgeduckett.helloworld.ScrollWidgetProvider.ListItemIndex);
Toast.makeText(this, Integer.toString(Index), Toast.LENGTH_LONG).show();
}
else
{
Toast.makeText(this, "Boo!", Toast.LENGTH_LONG).show();
}
setContentView(R.layout.main);
}
何が起こることは私はをクリックして1に関係なく常に得るある現在:
public static String ListItemIndex = "com.georgeduckett.helloworld.ScrollWidgetProvider.ListItemIndex";
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
final int N = appWidgetIds.length;
// Perform this loop procedure for each App Widget that belongs to this provider
for (int i=0; i<N; i++) {
int appWidgetId = appWidgetIds[i];
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.scroll_widget_layout);
// Create several views that will contain the content
for (int newviewindex = 1; newviewindex<5; newviewindex++) {
// Create an Intent to launch WidgetActivity for when we're clicked on
Intent intent = new Intent(context, WidgetActivity.class);
Bundle bundle = new Bundle();
bundle.putInt(com.georgeduckett.helloworld.ScrollWidgetProvider.ListItemIndex, newviewindex);
intent.putExtras(bundle);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
RemoteViews SubItemView = new RemoteViews(context.getPackageName(), R.layout.scroll_widget_item_layout);
SubItemView.setTextViewText(R.id.textbox1, "testing " + newviewindex);
SubItemView.setOnClickPendingIntent(R.id.textbox1, pendingIntent);
views.addView(R.id.items_container, SubItemView);
}
// Tell the AppWidgetManager to perform an update on the current App Widget
appWidgetManager.updateAppWidget(appWidgetId, views);
}
}
そしてここでは、アクティビティコードがあります私は常に最初のものをクリックしていることを意味する "1"ポップアップ、または間違ったデータが通過していることを意味します。
私はこの場所を見渡しましたが、一般的な「データの受け渡し方法」タイプのチュートリアル/問題以外の情報は見つかりませんでした。
お返事ありがとうございます。私はPendingIntent.FLAG_CANCEL_CURRENTを使用してみました(そしてPendingIntent.FLAG_ONE_SHOTも)、しかし今、何が起こるかは、私の操作が最初に呼び出されるだけです。ウィジェットは何も起こらないように見える。 –
私はまた、最後のテキストビューだけがアクションを開始し、他のものは何もしないように見えることに気付きました。 –
Androidには「最後のものが勝つ」場所がたくさんあるようです。たとえば、inClick(){startActivity(X);} startActivity(Y); }私はYが呼び出される(iirc) –