2

私はAndroidホームウィジェットでプログラミングを始めたばかりなので、settextviewtext()によってウィジェットプロバイダーからホームウィジェットのテキストビューにテキストを設定できましたが、そこからテキストを取得したい場合、理想的ではありません。アクティビティのように通常どおりfindViewById()を使用してから、getText()を使用することはできません。ウィジェットプロバイダーからホームウィジェットのtextviewのテキストを取得する方法はありますか?または、別のアクティビティから取得する方法を教えてください。

4

3 に答える 3

7

CommonsWareこの質問では次のように述べて います。

できません。アプリウィジェットは書き込み専用です。データをウィジェットにプッシュすることはできますが、読み取ることはできません。

代わりに、アプリウィジェットを新しいテキストで更新する場合、そのテキストをどこかに、おそらくファイルに保存する必要があります。

于 2012-06-28T03:33:47.790 に答える
0

ウィジェットのチュートリアルとそれを使って何ができるかについては、これをお読みください。

于 2012-06-28T02:14:31.150 に答える
0
  1. アプリウィジェットのレイアウトと表示をインスタンス化する場所で、次のように記述します。

     SharedPreferences settings = 
     PreferenceManager.getDefaultSharedPreferences(context);
     @SuppressLint("CommitPrefEdits")
     SharedPreferences.Editor  editor = settings.edit();
     String rowid = "500"; 
     editor.putString("appWidgetRowId", rowid);
     editor.apply();
    
  2. 次に、そのROWID(500を意味します)を取得し、AppWidgetProviderに書き込みます。

    @Override
         public void onReceive(final Context context, Intent intent) {
             super.onReceive(context, intent);
    
     SharedPreferences settings = 
     PreferenceManager.getDefaultSharedPreferences(context);
                 @SuppressLint("CommitPrefEdits")
                 SharedPreferences.Editor  editor = settings.edit();
    
                 final String rowId= settings.getString("appWidgetRowId", null);
                 Toast toast = Toast.makeText(context, "Opening....  "+rowId, Toast.LENGTH_SHORT);
                 toast.setGravity(Gravity.CENTER|Gravity.BOTTOM, 0, 0);
                 toast.show();
     }
    

この2番目のメソッドonWidgetクリックオプションを呼び出すことができます。

于 2021-06-19T11:21:58.777 に答える