Notice
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 | 31 |
Tags
- 크로스오버
- 단 벌란
- 유로댄스
- 몰도바
- o-zone
- POP
- Arsenie Todiraş
- Windows DDK
- WinAPI
- Maksim
- 아르세니에 토디라슈
- 해외 여행
- Radu Sârbu
- input method editor
- API
- ime
- Romanian
- Euro-Dance
- 라두 스르부
- Jr
- Dan Balan
- 막심 므라비차
- Moldovan
- c언어
- 철도
- Disc O-Zone
- Windows API
- 루마니아어
- 일본 여행
- windowsAPI
- Today
- 204
- Total
- 1,073,377
(코딩캣) = "코딩"하는 고양이;
위젯과 액티비티간의 데이터 교환 예제 본문
Application Programming Interface/Android
위젯과 액티비티간의 데이터 교환 예제
컴파일러님, 이 코드는 고양이발로 작성되었습니다. 코딩집사 2015. 2. 4. 17:10
Activity 측의 코드
// MainActivity.java package com.example.widgettest; import android.app.*; import android.appwidget.*; import android.content.*; import android.os.*; import android.view.*; import android.widget.*; public class MainActivity extends Activity { private TextView textView1 = null; private EditText editText1 = null; private Button button1 = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); this.textView1 = (TextView)this.findViewById(com.example.widgettest.R.id.textView1); this.editText1 = (EditText)this.findViewById(com.example.widgettest.R.id.editText1); this.button1 = (Button)this.findViewById(com.example.widgettest.R.id.button1); // 버튼 클릭할 경우 this.button1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub // 액티비티와 Widget간의 데이터 전달 매개체로 SharefPreferences를 사용합니다. 코코아 프레임워크의 NSUserDefaults에 해당합니다. SharedPreferences sharedPreferences = MainActivity.this.getSharedPreferences("com.example.widgettest.sharedPreferences", Context.MODE_WORLD_WRITEABLE); SharedPreferences.Editor editor = sharedPreferences.edit(); // 에디터를 사용해 editText1에 있는 문자열을 textBox라는 이름으로 SharedPreferences에 저장합니다. editor.putString("textBox", MainActivity.this.editText1.getText().toString()); editor.commit(); // Widget에게 값이 변경되었으니 업데이트하라는 메시지를 Broadcast를 통해 전달합니다. Intent intent = new Intent(MainActivity.this, Widget.class); intent.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE); MainActivity.this.sendBroadcast(intent); } }); } }
2. Widget측의 코드
// WidgetProvider.java package com.example.widgettest; import android.app.*; import android.appwidget.*; import android.content.*; import android.widget.*; public class WidgetProvider extends AppWidgetProvider { @Override public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { // TODO Auto-generated method stub super.onUpdate(context, appWidgetManager, appWidgetIds); for (int appWidgetId : appWidgetIds) { RemoteViews remoteViews = new RemoteViews(context.getPackageName(), com.example.widgettest.R.layout.widget); Intent intent = new Intent(context, MainActivity.class); PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0); remoteViews.setOnClickPendingIntent(R.id.button1, pendingIntent); // 새로 고침 작업을 별도의 메서드로 빼기 this.refresh(context, remoteViews); // 새로 고침 작업이 완료 후 위젯에게 업데이트 할 것을 통지 appWidgetManager.updateAppWidget(appWidgetId, remoteViews); } } private void refresh(Context context, RemoteViews remoteViews) { // Activity에서 만든 것과 같은 식별자를 갖는 SharedPreferences를 생성 SharedPreferences sharedPreferences = context.getSharedPreferences("com.example.widgettest.sharedPreferences", Context.MODE_WORLD_WRITEABLE); // textBox라는 이름을 갖는 문자열 변수가 있다면 그것을 가져오고, 없으면 기본값으로 "HaHaHa"를 반환 // 반환된 문자열은 위젯에서 textView1이라는 TextView에 전달 remoteViews.setTextViewText(com.example.widgettest.R.id.textView1, sharedPreferences.getString("textBox", "HaHaHa")); } }
실행 결과
'Application Programming Interface > Android' 카테고리의 다른 글
인텐트를 통한 액티비티간 결과값 전달하기 (0) | 2015.04.20 |
---|---|
위젯 업데이트 주기 빠르게 하기 (1) | 2015.03.18 |
MediaRecorder 클래스 사용법 (소리 편) (0) | 2015.02.09 |
MediaPlayer 클래스 사용법 (0) | 2015.02.06 |
위젯 구현하기 (0) | 2015.02.05 |
위젯과 액티비티간의 데이터 교환 예제 (2) | 2015.02.04 |
2 Comments