0

私はこれをしばらくの間成功させようとしてきました。私はオプションを使い果たしており、皆さんが助けてくれることを願っています。 sharedprefernceを使用してテキストを編集テキストに保存します。次に、そのテキストを私のappwidgetproviderに送ります。appwidgetproviderはウィジェットがクリックされたときにテキストを編集のために送ります。編集が終わったら、それを保存してappwidgetproviderなどにテキストを送り返す必要があります。私のsharedpreferenceは更新されません

しかしそうではありません。編集テキストは以前に保存されたテキストで開きますが、保存した後は共有設定を更新しません。アプリウィジェットプロバイダの共有設定の値は変わりません。

これは、appwidgetproviderにテキストを送信するクラスです。ここで

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(widget_handler); 

    editText = (EditText) findViewById(R.id.widget_note); 
    editText.requestFocus(); 
    final InputMethodManager imm2 = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
    imm2.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar_widget); 
    setSupportActionBar(toolbar); 
    editText.setText(getIntent().getStringExtra("Name")); 



    toolbar.setNavigationIcon(R.drawable.ic_arrow_back_white_24dp); 
    toolbar.setNavigationOnClickListener(new View.OnClickListener(){ 
    @Override 
    public void onClick(View v) { 
    String newEntry = editText.getText().toString(); 
     final SharedPreferences sharedPreferences=getSharedPreferences("Key",WidgetHandler.MODE_PRIVATE); 
     final SharedPreferences.Editor editor=getSharedPreferences(newEntry,WidgetHandler.MODE_PRIVATE).edit(); 
     sharedPreferences.edit().putString("Name",newEntry).apply(); 
     editor.putString("Name",newEntry); 
     editor.apply(); 
     Intent intent3= getIntent(); 
     Bundle extras=intent3.getExtras(); 

     if (extras!= null) { 
      mAppWidgetId = extras.getInt(
        AppWidgetManager.EXTRA_APPWIDGET_ID, 
        AppWidgetManager.INVALID_APPWIDGET_ID); 
     } 


      AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(getApplicationContext()); 
      RemoteViews remoteViews = new RemoteViews(getApplicationContext().getPackageName(), R.layout.new_app_widget); 

      remoteViews.setTextViewText(R.id.appwidget_text, newEntry); 
      appWidgetManager.updateAppWidget(mAppWidgetId, remoteViews); 
      final Intent intent = new Intent(); 
      intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, mAppWidgetId); 
      intent.putExtra("Name",newEntry); 

     setResult(RESULT_OK, intent); 


      InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
      imm.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY, 0); 
      finish(); 
      Intent home = new Intent(Intent.ACTION_MAIN); 
      home.addCategory(Intent.CATEGORY_HOME); 
      home.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      startActivity(home); 


    } 
}); 

は、更新されたテキストを受け取ることになっている私のappwidgetproviderです。

static void updateAppWidget(Context context, AppWidgetManager appWidgetManager, 
          int appWidgetId) { 

} 

@Override 
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { 
    for (int appWidgetId : appWidgetIds) { 
     RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.new_app_widget); 

     SharedPreferences sharedPreferences=context.getSharedPreferences("Key",Context.MODE_PRIVATE); 
     String name=sharedPreferences.getString("Name",""); 
     Log.e("name",name); 

     final Intent clickIntent = new Intent(context, WidgetHandler.class); 
     clickIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID,appWidgetId); 
     clickIntent.putExtra("Name",name); 
     PendingIntent clickPI = PendingIntent.getActivity(context, 0, clickIntent,PendingIntent.FLAG_UPDATE_CURRENT); 

     views.setOnClickPendingIntent(R.id.appwidget_text,clickPI); 

     // Instruct the widget manager to update the widget 
     appWidgetManager.updateAppWidget(appWidgetId, views); 




    } 
    super.onUpdate(context, appWidgetManager, appWidgetIds); 
} 





@Override 
public void onEnabled(Context context) { 

    // Instruct the widget manager to update the widget 


} 

@Override 
public void onDisabled(Context context) { 


    // Enter relevant functionality for when the last widget is disabled 
} 

ありがとうございます。

答えて

0

editor.apply()の代わりにeditor.commit()を試してください

+0

まだ運がない – CharlieKid

関連する問題