package com.example.android.recipe103; import java.util.HashMap; import java.util.Map; import android.app.Activity; import android.appwidget.AppWidgetManager; import android.content.ContentUris; import android.content.Context; import android.net.Uri; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.RemoteViews; public class MyActivity extends Activity { static Map<Integer, CharSequence> map = new HashMap<Integer, CharSequence>(); @Override public void onCreate(Bundle saveInstanceState) { super.onCreate(saveInstanceState); setContentView(R.layout.activity); // EditText EditText editText = (EditText)findViewById(R.id.EditText01); // Widget の id を受け取る final Uri uri = getIntent().getData(); // 過去のデータを表示 if (uri != null) { int id = (int )ContentUris.parseId(uri); editText.setText(loadText(id)); } // Button Button button = (Button)findViewById(R.id.Button01); button.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { Context context = MyActivity.this; AppWidgetManager manager = AppWidgetManager.getInstance(context); RemoteViews remoteViews = new RemoteViews( context.getPackageName(), R.layout.widget); EditText editText = (EditText)findViewById(R.id.EditText01); CharSequence text = editText.getText(); if (uri != null) { int id = (int)ContentUris.parseId(uri); Log.d("MyActivity", "id:" + id); // 入力された値を保存 saveText(id, text); // Widget 表示を更新 remoteViews.setTextViewText(R.id.TextView01, text); manager.updateAppWidget(id, remoteViews); } finish(); } }); } // 各AppWidgetの値をid 毎に覚えておく static private void saveText(int id, CharSequence text) { map.put(id, text); } static private CharSequence loadText(int id) { if (! map.containsKey(id)) { saveText(id, ""); } return (CharSequence)map.get(new Integer(id)); } }