안녕하세요 저는 텍스트 뷰가있는 Appwidget (위젯)에 데이터를 보내야하는 활동 1이 있습니다.다른 활동에서 App 위젯으로 데이터 가져 오기
우리는 intent.putExtra("mydata", dataString);
을 사용할 수 있고 String data = bundle.getString("mydata");
과 동일하게 알 수 있습니다.하지만 제 경우에는 응용 프로그램 위젯에 데이터 (String)를 보내야합니다. 난의 AppWidgetProvider 내부
Bundle dataFromPrevious = getIntent().getExtras();
String newString = dataFromPrevious.getString("mydata");
를 사용하는 경우
그것은 getIntent는 Class 형에 대한 정의되지 않은 말 getIntent에 오류가 발생합니다.
어떻게이 AppWidget 내부에서 문자열을 가져올 수 있습니까? 또한이 텍스트는 활동 1에서 새 문자열로 자주 업데이트되므로이 상황에 대해 SharedPrefrences
을 사용하는 것이 좋습니다. 다른 방법이 있습니까?
UPDATE 1 : 요셉 언급 한 바와 같이, 난 내 매니페스트 <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
을 추가 한
는
지금 나는 또한 내에서에서 AppWidget 에@Override
public void onReceive(Context context, Intent intent) {
Bundle getPrevData = intent.getExtras();
String data = getPrevData.getString("mydata");
newdata = data;
super.onReceive(context, intent);
}
을 OnRecieve 재정을 만들었습니다 업데이트 있음
views.setTextViewText(R.id.dataWidget,newdata);
여기 newdata
은 public static String
입니다.하지만 아무 것도 표시하지 않습니다 !!! 때 위젯에서 textview setTextViewText. 내가 여기서 뭔가를 놓치고 있니? 도와주세요 ...
업데이트 2 :
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.widget.RemoteViews;
import android.widget.Toast;
public class MainWidget extends AppWidgetProvider {
private RemoteViews views;
public static String newdata
@Override
public void onReceive(Context context, Intent intent) {
Bundle getPrevData = intent.getExtras();
String data = getPrevData.getString("mydata");
newdata = data;
super.onReceive(context, intent);
}
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
views = new RemoteViews(context.getPackageName(),R.layout.widget_layout);
appWidgetManager.updateAppWidget(appWidgetIds, views);
//views.setTextViewText(R.id.dataWidget,newdata);
super.onUpdate(context, appWidgetManager, appWidgetIds);
}
}
그리고 이것은 나의 또 다른 activityvthat가 보내는 데이터 :
final String text = ((TextView)findViewById(R.id.textview)).getText().toString();
Intent intent = new Intent(FirstActivity.this, MainWidget.class);
intent.putExtra("mydata", text);
한다 라인'String 데이터 = getVerseData.getString ("mydata을"이)'하지'String 데이터 = getPrevData.getString ("다음 mydata"); '대신에? –
또한 방송을 보내기 위해 사용중인 코드를 게시 할 수있는 경우를 대비하여 제공 할 수 있습니다. –
안녕하세요, 스택 오버플로에 잘못 입력했습니다. 실수해서 미안 해요! 더 많은 참조를 위해 완전한 코드로 두 번째 업데이트를 수행 할 것입니다. – Wesley