2

アプリケーションのウィジェットを作成しましたが、メインのウィジェット レイアウトを表示する前に初期読み込みレイアウトが必要です。初期レイアウトとメイン レイアウトとしてロード アップ レイアウトを作成しました。onUpdate メソッドでの読み込みが完了した後、RemoteViews を使用してメインのウィジェット レイアウトを表示しようとしましたが、表示されません。

初期レイアウトからメイン レイアウトに切り替える方法はありますか?

編集

返信が遅くなり申し訳ありません。正しいブロックが表示されていることを願っています。私がしたことは、アプリ ウィジェットのプロパティで初期レイアウトを設定し、別のクラス ファイルのサービスを介して onUpdate メソッドで表示している実際のレイアウトに変更することでした。

ここに私のコードがあります:

ウィジェット情報

    <?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
    android:initialLayout="@layout/initial_layout"
    android:minHeight="146dp"
    android:minWidth="294dp"
    android:updatePeriodMillis="1800" >

</appwidget-provider>

これは、onUpdate メソッドに入力したものです。

@Override
    public void onUpdate(Context context, AppWidgetManager appWidgetManager,
            int[] appWidgetIds) {
        // TODO Auto-generated method stub
        super.onUpdate(context, appWidgetManager, appWidgetIds);
        }

        //start service
        Intent myIntent = new Intent(context, WeatherNotificationService.class);
        context.startService((myIntent));

    }

サービスメソッド内で入力したコードは次のとおりです。

    AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(WeatherNotificationService.this.getApplicationContext());
            ComponentName thisWidget = new ComponentName(getApplicationContext(),SafetyWidget.class);
            int[] appWidgetIds = appWidgetManager.getAppWidgetIds(thisWidget);
            new CommonOpearation().showToast(getApplicationContext(), appWidgetIds.length+"");
            for (int i = 0; i < appWidgetIds.length; i++) {
                int appWidgetID = appWidgetIds[i];
                DateFormat formatter = new SimpleDateFormat("EEE, dd/MM/yyyy");
                formatter.setLenient(false);
                Date a= new Date();

                RemoteViews remoteViews = new RemoteViews(getApplicationContext().getPackageName(),R.layout.widget_layout);
                remoteViews.setTextViewText(R.id.todayDate,formatter.format(a));
remoteViews.setTextViewText(R.id.psiTime,currentNowCast.getCurrentPsiObj().getDatenTime()); 
            remoteViews.setTextViewText(R.id.psiTV,currentNowCast.getCurrentPsiObj().getPsi()); 

remoteViews.setTextViewText(R.id.textViewTodayTemp,currentNowCast.getCurrentTemp().getTemp());
            remoteViews.setTextViewText(R.id.textViewNearestRegion, nowCastWeather.getNwo().getRegion());   
            remoteViews.setTextViewText(R.id.hospTV, contact.getName());    
appWidgetManager.updateAppWidget(appWidgetID, remoteViews);

RemoteViews 機能は、onUpdate で呼び出されたときに適切なレイアウトを表示することですか? これは不可解です...

4

0 に答える 0