2017-03-10 11 views
0

現在、ImageButtonを含むフラグメント付きのナビゲーションドロワーを使用するアンドロイドアプリを開発しています。ユーザーは、これらのImageButtonの背景イメージを変更することができます。ナビゲーションドロワーにフラグメントの変更を保存する

ただし、変更を加えて別のフラグメントに切り替えた後、最初のフラグメントに切り替えると、変更がリセットされます(ImageButtonの背景がデフォルトにリセットされます)。

私は現在のコードが選択されるたびにフラグメントを再作成することを理解します。私がそれらを残した状態で断片を単に再オープンすることはできますか?

PS。アプリが閉じられていても開いていても、これらの変更を保存することができるソリューションは素晴らしいものです。ありがとう! (それらはすべてほぼ同じです)

public boolean onNavigationItemSelected(MenuItem item) { 
     // Handle navigation view item clicks here. 
     int id = item.getItemId(); 
     android.app.FragmentManager fragmentManager = getFragmentManager(); 

     if (id == R.id.nav_agni) { 
      fragmentManager.beginTransaction().replace(R.id.content_frame, new FragmentAgni()).commit(); 
     } else if (id == R.id.nav_ah_muzen_cab) { 
      fragmentManager.beginTransaction().replace(R.id.content_frame, new FragmentAhMuzenCab()).commit(); 
     } else if (id == R.id.nav_ah_puch) { 
      fragmentManager.beginTransaction().replace(R.id.content_frame, new FragmentAhPuch()).commit(); 
     } else if (id == R.id.nav_amaterasu) { 
      fragmentManager.beginTransaction().replace(R.id.content_frame, new FragmentAmaterasu()).commit(); 
     } 

     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     drawer.closeDrawer(GravityCompat.START); 
     return true; 
    } 

そして、ここで私の断片の一つである:ここで

は私のメインの引き出しの活動方法である

public class FragmentAhMuzenCab extends Fragment { 

    View myView; 

    public FragmentAhMuzenCab() { 
    } 

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     myView = inflater.inflate(R.layout.god_ah_muzen_cab, container, false); 

     //ImageButtons 
     //Starter Item + Relics 
     final ImageButton starter = (ImageButton) myView.findViewById(R.id.imageStarterItem); 
     final ImageButton relic1 = (ImageButton) myView.findViewById(R.id.imageRelic1); 
     final ImageButton relic2 = (ImageButton) myView.findViewById(R.id.imageRelic2); 

     //Full Build 
     final ImageButton item1 = (ImageButton) myView.findViewById(R.id.imageItem1); 
     final ImageButton item2 = (ImageButton) myView.findViewById(R.id.imageItem2); 
     final ImageButton item3 = (ImageButton) myView.findViewById(R.id.imageItem3); 

     final ImageButton item4 = (ImageButton) myView.findViewById(R.id.imageItem4); 
     final ImageButton item5 = (ImageButton) myView.findViewById(R.id.imageItem5); 
     final ImageButton item6 = (ImageButton) myView.findViewById(R.id.imageItem6); 

     starter.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View arg0) { 
       ItemPhysStarterFragment dialog = ItemPhysStarterFragment.newInstance(); 
       dialog.setOnListItemSelectedListener(new ItemPhysStarterFragment.OnListItemClickedListener() { 
        public void onListItemClick(int resourceId) { 
         starter.setImageResource(resourceId); 
        } 
       }); 
       dialog.show(getFragmentManager(), "starterDialog"); 
      } 
     }); 

     relic1.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View arg0) { 
       ItemRelicFragment dialog = ItemRelicFragment.newInstance(); 
       dialog.setOnListItemSelectedListener(new ItemRelicFragment.OnListItemClickedListener() { 
        public void onListItemClick(int resourceId) { 
         relic1.setImageResource(resourceId); 
        } 
       }); 
       dialog.show(getFragmentManager(), "relic1Dialog"); 
      } 
     }); 

     relic2.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View arg0) { 
       ItemRelicFragment dialog = ItemRelicFragment.newInstance(); 
       dialog.setOnListItemSelectedListener(new ItemRelicFragment.OnListItemClickedListener() { 
        public void onListItemClick(int resourceId) { 
         relic2.setImageResource(resourceId); 
        } 
       }); 
       dialog.show(getFragmentManager(), "relic2Dialog"); 
      } 
     }); 

     item1.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View arg0) { 
       ItemPhysFragment dialog = ItemPhysFragment.newInstance(); 
       dialog.setOnListItemSelectedListener(new ItemPhysFragment.OnListItemClickedListener() { 
        public void onListItemClick(int resourceId) { 
         item1.setImageResource(resourceId); 
        } 
       }); 
       dialog.show(getFragmentManager(), "item1Dialog"); 
      } 
     }); 

     item2.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View arg0) { 
       ItemPhysFragment dialog = ItemPhysFragment.newInstance(); 
       dialog.setOnListItemSelectedListener(new ItemPhysFragment.OnListItemClickedListener() { 
        public void onListItemClick(int resourceId) { 
         item2.setImageResource(resourceId); 
        } 
       }); 
       dialog.show(getFragmentManager(), "item2Dialog"); 
      } 
     }); 

     item3.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View arg0) { 
       ItemPhysFragment dialog = ItemPhysFragment.newInstance(); 
       dialog.setOnListItemSelectedListener(new ItemPhysFragment.OnListItemClickedListener() { 
        public void onListItemClick(int resourceId) { 
         item3.setImageResource(resourceId); 
        } 
       }); 
       dialog.show(getFragmentManager(), "item3Dialog"); 
      } 
     }); 

     item4.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View arg0) { 
       ItemPhysFragment dialog = ItemPhysFragment.newInstance(); 
       dialog.setOnListItemSelectedListener(new ItemPhysFragment.OnListItemClickedListener() { 
        public void onListItemClick(int resourceId) { 
         item4.setImageResource(resourceId); 
        } 
       }); 
       dialog.show(getFragmentManager(), "item4Dialog"); 
      } 
     }); 

     item5.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View arg0) { 
       ItemPhysFragment dialog = ItemPhysFragment.newInstance(); 
       dialog.setOnListItemSelectedListener(new ItemPhysFragment.OnListItemClickedListener() { 
        public void onListItemClick(int resourceId) { 
         item5.setImageResource(resourceId); 
        } 
       }); 
       dialog.show(getFragmentManager(), "item5Dialog"); 
      } 
     }); 

     item6.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View arg0) { 
       ItemPhysFragment dialog = ItemPhysFragment.newInstance(); 
       dialog.setOnListItemSelectedListener(new ItemPhysFragment.OnListItemClickedListener() { 
        public void onListItemClick(int resourceId) { 
         item6.setImageResource(resourceId); 
        } 
       }); 
       dialog.show(getFragmentManager(), "item6Dialog"); 
      } 
     }); 

     return myView; 
    } 
} 

答えて

1

はい、フラグメントが再作成され、I SharedPreferencesに画像のリソースIDを保存することをお勧めします。

starter.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View arg0) { 
       ItemPhysStarterFragment dialog = ItemPhysStarterFragment.newInstance(); 
       dialog.setOnListItemSelectedListener(new ItemPhysStarterFragment.OnListItemClickedListener() { 
        public void onListItemClick(int resourceId) { 
         ...store the resourceId for this image in the Shared Preferences 
         starter.setImageResource(resourceId); 
        } 
       }); 
       dialog.show(getFragmentManager(), "starterDialog"); 
      } 
     }); 

あなたのFragmentのonCreatあなたは次のようなことができます:

starter.setImageResource(...get resource id from shared prefs); 
+0

恐ろしいです!最後にそれを働かせました。おかげでMilhail –

+0

あなたは非常にアダムを歓迎しています。 –

関連する問題