0
"위젯로드 문제"오류가 발생합니다. 숫자 값 1과 2를 단순히 뒤집는 위젯을 만들려고했지만로드되지 않았습니다. 또한, 내 logcat은 비어 있으므로 문제를 파악할 수 없습니다. 위젯을 다시 설치했지만 여전히 같은 문제가 발생하여 프로젝트를 청소하려고했습니다. 여기 위젯이 홈 화면에로드되지 않음
내 DemoUI.java XML 내부package com.example.widget2;
import android.app.PendingIntent;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.widget.RemoteViews;
import android.widget.Toast;
public class DemoUI extends AppWidgetProvider {
public static String MY_WIDGET_UPDATE="ACTION_BUTTON1";
RemoteViews remoteViews;
@Override
public void onReceive(Context context, Intent intent){
super.onReceive(context, intent);
if(intent.getAction().equals(MY_WIDGET_UPDATE)){
Bundle b = intent.getExtras();
if(b != null) {
int num = (Integer) b.get("num");
Toast.makeText(context, num, Toast.LENGTH_LONG).show();
}
}
}
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,int []appWidgetIds){
int num=1;
ComponentName comp=new ComponentName(context,DemoUI.class);
int []allWidgetIds=appWidgetManager.getAppWidgetIds(comp);
for(int widgetIds:allWidgetIds){
//num=(num+1)%3;
num++;
remoteViews=new RemoteViews(context.getPackageName(),R.layout.main);
Log.w("WidgetExample2",String.valueOf(num));
remoteViews.setTextViewText(R.id.text1, String.valueOf(num));
//register listener
Intent intent=new Intent(context,DemoUI.class);
//intent.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
intent.setAction(MY_WIDGET_UPDATE);
//intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, appWidgetIds);
intent.putExtra("num", num++);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context,0,intent,PendingIntent.FLAG_UPDATE_CURRENT);
remoteViews.setOnClickPendingIntent(R.id.button1, pendingIntent);
//committing changes to the widget
appWidgetManager.updateAppWidget(widgetIds, remoteViews);
}
}
}
// 레이아웃 폴더 안에 내 매니페스트
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.widget2"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<receiver android:name="com.example.widget2.DemoUI">
<intent-filter >
<action
android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/info"/>
</receiver>
</application>
</manifest>
//main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<View
android:layout_width="1dp"
android:layout_height="30dp"/>
<TextView
android:id="@+id/text1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="@string/someText"
/>
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/refresh"
android:layout_gravity="center"
android:onClick="showText"
/>
<CheckBox
android:id="@+id/check"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/update"
android:layout_gravity="center"
android:onClick="UpdateAutomatically"
/>
</LinearLayout>
//info.xml입니다 폴더
<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:initialLayout="@layout/main"
android:minWidth="146dp"
android:minHeight="72dp"
android:updatePeriodMillis="300000"
>
</appwidget-provider>
thanks..it worked .. – Atihska
새로 고침 버튼을 클릭 할 때 1에서 2 사이의 값을 뒤집는 플리퍼를 만들고 있습니다. 버튼을 클릭하면 아무런 동작도 수행되지 않습니다. – Atihska
버튼 1인가요? 어쨌든, 당신은 onOnClickPendingIntent()와 onReceive()를 오버라이드해야합니다. 그에 따라 위젯의 상태를 업데이트하십시오. – ozbek