2016-03-24 9 views
0

私はすべてを検索し、例を追ってみましたが、私はSharedPreferencesを実装することができません。ImageViewはSharedPreferenceに基づいて

私は非常に低い技術のパンチカードを作成しています。 NFCTagには「コーヒー」というテキストフィールドがあります。「サンドイッチ」という別の文字列があります。同じ名前の2つの文字列があります。 Coffee Tagをタップすると、コーヒーイメージが変更され、Sandwichタグをタップすると、そのサンドイッチイメージが変更されます。今

私の質問は、私はそれが設定を保存するために取得することができていますが、それは画像を更新していない、任意の提案は...

https://github.com/soboapps/PunchCardをいただければ幸いです... - これはあなたに何のアイデアを与えることがあり私はやろうとしている。

は、ここに私のコード(私はそれが混乱知っている)

public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener { 

    public boolean cflag = false; 
    public boolean sflag = false; 

    private static final String NAV_ITEM_ID = "navItemId" ; 
    private static final long DRAWER_CLOSE_DELAY_MS = 300 ; 
    private DrawerLayout mDrawerLayout; 

    private int mNavItemId; 
    private ActionBarDrawerToggle mDrawerToggle; 

    private final CoffeeFragment mCoffeeFragment= new CoffeeFragment(); 
    private final SandwichFragment mSandwichFragment = new SandwichFragment(); 
    private final AboutFragment mAboutFragment = new AboutFragment(); 
    private final Handler mDrawerActionHandler = new Handler(); 

    private static final DateFormat TIME_FORMAT = SimpleDateFormat.getDateTimeInstance(); 
    private LinearLayout mTagContent; 
    private LinearLayout mCoffee1_3Content; 

    private NfcAdapter mAdapter; 
    private PendingIntent mPendingIntent; 
    private NdefMessage mNdefPushMessage; 

    private AlertDialog mDialog; 

    public static String myTagId; 
    public static String myCTagUrl; 
    public static String mySTagId; 
    public static String mySTagUrl; 
    public static String sPayload; 

    private ImageView mCoffee1ImageView; 
    private ImageView mCoffee2ImageView; 
    private ImageView mCoffee3ImageView; 
    private ImageView mCoffee4ImageView; 
    private ImageView mCoffee5ImageView; 
    private ImageView mCoffee6ImageView; 
    private ImageView mCoffee7ImageView; 
    private ImageView mCoffee8ImageView; 
    private ImageView mCoffee9ImageView; 

    private ImageView mSandwich1ImageView; 
    private ImageView mSandwich2ImageView; 
    private ImageView mSandwich3ImageView; 
    private ImageView mSandwich4ImageView; 
    private ImageView mSandwich5ImageView; 
    private ImageView mSandwich6ImageView; 
    private ImageView mSandwich7ImageView; 
    private ImageView mSandwich8ImageView; 
    private ImageView mSandwich9ImageView; 

    public SharedPreferences prefs; 



    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     prefs = PreferenceManager.getDefaultSharedPreferences(this); 

     cflag = prefs.getBoolean("selected", false); 

     LayoutInflater inflater = LayoutInflater.from(this); 
     LinearLayout content = mCoffee1_3Content; 
     View view = inflater.inflate(R.layout.coffee_fragment, content, false); 

     mCoffee1ImageView = (ImageView) view.findViewById(R.id.img_cof_1); 

     checkFlag(); 

     // Initialize Drawer layout -> activity_main 
     mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); 

     //Initialize Toolbar android.support.v7.widget.Toolbar 
     Toolbar mToolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(mToolbar); 

     //Load saved navigation state if present 
     if (null==savedInstanceState){ 
      mNavItemId = R.id.drawer_item_1; 
     }else{ 
      mNavItemId = savedInstanceState.getInt(NAV_ITEM_ID); 
     } 

     // Listen to navigation events 
     NavigationView navigationView = (NavigationView) findViewById(R.id.navigation); 
     navigationView.setNavigationItemSelectedListener(this); 

     //Select the Correct nav menu item 
     navigationView.getMenu().findItem(mNavItemId).setChecked(true); 

     // Setup the humberger icon to open and close drawer 
     mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, mToolbar, R.string.open, R.string.close); 
     mDrawerLayout.setDrawerListener(mDrawerToggle); 
     mDrawerToggle.syncState(); 

     // navigate function to swich between items id 
     // parameter item id 
     navigate(mNavItemId); 

     mTagContent = (LinearLayout) findViewById(R.id.list); 
     mCoffee1_3Content = (LinearLayout) findViewById(R.id.cof_1_3); 
     resolveIntent(getIntent()); 

     mDialog = new AlertDialog.Builder(this).setNeutralButton("Ok", null).create(); 

     mAdapter = NfcAdapter.getDefaultAdapter(this); 
     if (mAdapter == null) { 
      showMessage(R.string.error, R.string.no_nfc); 
      finish(); 
      return; 
     } 

     mPendingIntent = PendingIntent.getActivity(this, 0, 
       new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0); 
     mNdefPushMessage = new NdefMessage(new NdefRecord[] { newTextRecord(
       "Message from NFC Reader :-)", Locale.ENGLISH, true) }); 

    } 


    public void checkFlag(){ 

     if(cflag) { 

      mCoffee1ImageView.setImageResource(R.drawable.sbp_coffee_free); 
     } else { 

      mCoffee1ImageView.setImageResource(R.drawable.sbp_coffee); 
     } 
    } 



    private void navigate(final int itemId) { 

     switch (itemId){ 
      case R.id.drawer_item_1: 
       //start about fragment 
       getFragmentManager().beginTransaction().replace(R.id.content,mCoffeeFragment).commit(); 
       break; 
      case R.id.drawer_item_about: 
       //start project fragment 
       getFragmentManager().beginTransaction().replace(R.id.content, mAboutFragment).commit(); 
       break; 
     } 

    } 


    private void showMessage(int title, int message) { 
     mDialog.setTitle(title); 
     mDialog.setMessage(getText(message)); 
     mDialog.show(); 
    } 

    private NdefRecord newTextRecord(String text, Locale locale, boolean encodeInUtf8) { 
     byte[] langBytes = locale.getLanguage().getBytes(Charset.forName("US-ASCII")); 

     Charset utfEncoding = encodeInUtf8 ? Charset.forName("UTF-8") : Charset.forName("UTF-16"); 
     byte[] textBytes = text.getBytes(utfEncoding); 

     int utfBit = encodeInUtf8 ? 0 : (1 << 7); 
     char status = (char) (utfBit + langBytes.length); 

     byte[] data = new byte[1 + langBytes.length + textBytes.length]; 
     data[0] = (byte) status; 
     System.arraycopy(langBytes, 0, data, 1, langBytes.length); 
     System.arraycopy(textBytes, 0, data, 1 + langBytes.length, textBytes.length); 

     return new NdefRecord(NdefRecord.TNF_WELL_KNOWN, NdefRecord.RTD_TEXT, new byte[0], data); 
    } 

    @Override 
    protected void onResume() { 

     super.onResume(); 
     checkFlag(); 
     if (mAdapter != null) { 
      if (!mAdapter.isEnabled()) { 
       showWirelessSettingsDialog(); 
      } 
      mAdapter.enableForegroundDispatch(this, mPendingIntent, null, null); 
      mAdapter.enableForegroundNdefPush(this, mNdefPushMessage); 
     } 
    } 

    @Override 
    protected void onPause() { 
     super.onPause(); 
     if (mAdapter != null) { 
      mAdapter.disableForegroundDispatch(this); 
      mAdapter.disableForegroundNdefPush(this); 
     } 
    } 

    private void showWirelessSettingsDialog() { 
     AlertDialog.Builder builder = new AlertDialog.Builder(this); 
     builder.setMessage(R.string.nfc_disabled); 
     builder.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialogInterface, int i) { 
       Intent intent = new Intent(Settings.ACTION_WIRELESS_SETTINGS); 
       startActivity(intent); 
      } 
     }); 
     builder.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialogInterface, int i) { 
       finish(); 
      } 
     }); 
     builder.create().show(); 
     return; 
    } 

    private void resolveIntent(Intent intent) { 
     String action = intent.getAction(); 
     if (NfcAdapter.ACTION_TAG_DISCOVERED.equals(action) 
       || NfcAdapter.ACTION_TECH_DISCOVERED.equals(action) 
       || NfcAdapter.ACTION_NDEF_DISCOVERED.equals(action)) { 
      Parcelable[] rawMsgs = intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES); 
      NdefMessage[] msgs; 

      if (rawMsgs != null) { 
       msgs = new NdefMessage[rawMsgs.length]; 
       for (int i = 0; i < rawMsgs.length; i++) { 
        msgs[i] = (NdefMessage) rawMsgs[i]; 
       } 
      } else { 
       // Unknown tag type 
       byte[] empty = new byte[0]; 
       byte[] id = intent.getByteArrayExtra(NfcAdapter.EXTRA_ID); 

       Parcelable tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG); 

       byte[] payload = dumpTagData(tag).getBytes(); 
       NdefRecord record = new NdefRecord(NdefRecord.TNF_UNKNOWN, empty, id, payload); 
       NdefMessage msg = new NdefMessage(new NdefRecord[] { record }); 
       msgs = new NdefMessage[] { msg } ; 
      } 
      // Setup the views 
      buildTagViews(msgs); 
     } 

    } 



    private String dumpTagData(Parcelable p) { 
     StringBuilder sb = new StringBuilder(); 
     Tag tag = (Tag) p; 
     byte[] id = tag.getId(); 
     sb.append("Tag ID (hex): ").append(getHex(id)).append("\n"); 
     sb.append("Tag ID (dec): ").append(getDec(id)).append("\n"); 
     sb.append("ID (reversed): ").append(getReversed(id)).append("\n"); 

     String prefix = "android.nfc.tech."; 
     sb.append("Technologies: "); 
     for (String tech : tag.getTechList()) { 
      sb.append(tech.substring(prefix.length())); 
      sb.append(", "); 
     } 
     sb.delete(sb.length() - 2, sb.length()); 
     for (String tech : tag.getTechList()) { 
      if (tech.equals(MifareClassic.class.getName())) { 
       sb.append('\n'); 
       MifareClassic mifareTag = MifareClassic.get(tag); 
       String type = "Unknown"; 
       switch (mifareTag.getType()) { 
        case MifareClassic.TYPE_CLASSIC: 
         type = "Classic"; 
         break; 
        case MifareClassic.TYPE_PLUS: 
         type = "Plus"; 
         break; 
        case MifareClassic.TYPE_PRO: 
         type = "Pro"; 
         break; 
       } 
       sb.append("Mifare Classic type: "); 
       sb.append(type); 
       sb.append('\n'); 

       sb.append("Mifare size: "); 
       sb.append(mifareTag.getSize() + " bytes"); 
       sb.append('\n'); 

       sb.append("Mifare sectors: "); 
       sb.append(mifareTag.getSectorCount()); 
       sb.append('\n'); 

       sb.append("Mifare blocks: "); 
       sb.append(mifareTag.getBlockCount()); 
      } 

      if (tech.equals(MifareUltralight.class.getName())) { 
       sb.append('\n'); 
       MifareUltralight mifareUlTag = MifareUltralight.get(tag); 
       String type = "Unknown"; 
       switch (mifareUlTag.getType()) { 
        case MifareUltralight.TYPE_ULTRALIGHT: 
         type = "Ultralight"; 
         break; 
        case MifareUltralight.TYPE_ULTRALIGHT_C: 
         type = "Ultralight C"; 
         break; 
       } 
       sb.append("Mifare Ultralight type: "); 
       sb.append(type); 
      } 
     } 

     return sb.toString(); 
    } 

    private String getHex(byte[] bytes) { 
     StringBuilder sb = new StringBuilder(); 
     for (int i = bytes.length - 1; i >= 0; --i) { 
      int b = bytes[i] & 0xff; 
      if (b < 0x10) 
       sb.append('0'); 
      sb.append(Integer.toHexString(b)); 
      if (i > 0) { 
       sb.append(" "); 
      } 
     } 
     return sb.toString(); 
    } 



    private long getDec(byte[] bytes) { 
     long result = 0; 
     long factor = 1; 
     for (int i = 0; i < bytes.length; ++i) { 
      long value = bytes[i] & 0xffl; 
      result += value * factor; 
      factor *= 256l; 
     } 
     return result; 
    } 

    private long getReversed(byte[] bytes) { 
     long result = 0; 
     long factor = 1; 
     for (int i = bytes.length - 1; i >= 0; --i) { 
      long value = bytes[i] & 0xffl; 
      result += value * factor; 
      factor *= 256l; 
     } 

     return result; 

    } 


    void buildTagViews(NdefMessage[] msgs) { 

     if (msgs == null || msgs.length == 0) { 
      return; 
     } 
     LayoutInflater inflater = LayoutInflater.from(this); 
     LinearLayout content = mTagContent; 

     // Parse the first message in the list 
     // Build views for all of the sub records 
     Date now = new Date(); 
     List<ParsedNdefRecord> records = NdefMessageParser.parse(msgs[0]); 
     final int size = records.size(); 
     for (int i = 0; i < size; i++) { 

      TextView timeView = new TextView(this); 
      timeView.setText(TIME_FORMAT.format(now)); 
      content.addView(timeView, 0); 
      ParsedNdefRecord record = records.get(i); 

      content.addView(record.getView(this, inflater, content, i), 1 + i); 
      content.addView(inflater.inflate(R.layout.tag_divider, content, false), 2 + i); 


      // Getting the text from the TextView from tag_text.xml and presenting it as Toast 
      TextView myTagView = (TextView)findViewById(R.id.text); 
      myTagId = myTagView.getText().toString(); 

      myCTagUrl = getString(R.string.ctag_url); 
      mySTagUrl = getString(R.string.stag_url); 


      if ((mCoffee9ImageView.getDrawable().getConstantState() == getResources().getDrawable(R.drawable.sbp_free_coffee).getConstantState()) && myCTagUrl.equals(myTagView.getText().toString())) { 
       Toast toast = Toast.makeText(this, "You Redeemed Your Free\n" + 
         "Cup of Coffee, Thank You\n" + 
         "For Your Patronage!", Toast.LENGTH_LONG); 
       TextView v = (TextView) toast.getView().findViewById(android.R.id.message); 
       if (v != null) v.setGravity(Gravity.CENTER); 
       toast.show(); 
       mCoffee1ImageView.setImageResource(R.drawable.sbp_coffee); 
       mCoffee2ImageView.setImageResource(R.drawable.sbp_coffee); 
       mCoffee3ImageView.setImageResource(R.drawable.sbp_coffee); 
       mCoffee4ImageView.setImageResource(R.drawable.sbp_coffee); 
       mCoffee5ImageView.setImageResource(R.drawable.sbp_coffee); 
       mCoffee6ImageView.setImageResource(R.drawable.sbp_coffee); 
       mCoffee7ImageView.setImageResource(R.drawable.sbp_coffee); 
       mCoffee8ImageView.setImageResource(R.drawable.sbp_coffee); 
       mCoffee9ImageView.setImageResource(R.drawable.sbp_coffee); 

       return; 

      } else if ((mCoffee1ImageView.getDrawable().getConstantState() != getResources().getDrawable(R.drawable.sbp_coffee_free).getConstantState()) && myCTagUrl.equals(myTagView.getText().toString())) { 
       mCoffee1ImageView.setImageResource(R.drawable.sbp_coffee_free); 

       //setCvisible(); 

       cflag = true; 
       mCoffee1ImageView.setImageResource(R.drawable.sbp_coffee_free); 
       SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); 
       prefs.edit().putBoolean("selected", true).commit(); 

       Toast toast = Toast.makeText(this, "Thanks!\n" + 
         "You Earned 1 Credit\n" + 
         "Towards a Free Coffee", Toast.LENGTH_LONG); 
       TextView v = (TextView) toast.getView().findViewById(android.R.id.message); 
       if (v != null) v.setGravity(Gravity.CENTER); 
       toast.show(); 
       break; 

      } else if ((mCoffee1ImageView.getDrawable().getConstantState() == getResources().getDrawable(R.drawable.sbp_coffee_free).getConstantState()) && myCTagUrl.equals(myTagView.getText().toString()) 
        && ((mCoffee2ImageView.getDrawable().getConstantState() != getResources().getDrawable(R.drawable.sbp_coffee_free).getConstantState()))) { 
       mCoffee2ImageView.setImageResource(R.drawable.sbp_coffee_free); 
       Toast toast = Toast.makeText(this, "Thanks!\n" + 
         "You Have Earned 2 Credits\n" + 
         "Towards a Free Coffee", Toast.LENGTH_LONG); 
       TextView v = (TextView) toast.getView().findViewById(android.R.id.message); 
       if (v != null) v.setGravity(Gravity.CENTER); 
       toast.show(); 
       break; 

      } else if ((mCoffee2ImageView.getDrawable().getConstantState() == getResources().getDrawable(R.drawable.sbp_coffee_free).getConstantState()) && myCTagUrl.equals(myTagView.getText().toString()) 
        && ((mCoffee3ImageView.getDrawable().getConstantState() != getResources().getDrawable(R.drawable.sbp_coffee_free).getConstantState()))) { 
       mCoffee3ImageView.setImageResource(R.drawable.sbp_coffee_free); 
       Toast toast = Toast.makeText(this, "Thanks!\n" + 
         "You Have Earned 3 Credits\n" + 
         "Towards a Free Coffee", Toast.LENGTH_LONG); 
       TextView v = (TextView) toast.getView().findViewById(android.R.id.message); 
       if (v != null) v.setGravity(Gravity.CENTER); 
       toast.show(); 
       break; 

      } else if ((mCoffee3ImageView.getDrawable().getConstantState() == getResources().getDrawable(R.drawable.sbp_coffee_free).getConstantState()) && myCTagUrl.equals(myTagView.getText().toString()) 
        && ((mCoffee4ImageView.getDrawable().getConstantState() != getResources().getDrawable(R.drawable.sbp_coffee_free).getConstantState()))) { 
       mCoffee4ImageView.setImageResource(R.drawable.sbp_coffee_free); 
       Toast toast = Toast.makeText(this, "Thanks!\n" + 
         "You Have Earned 4 Credits\n" + 
         "Towards a Free Coffee", Toast.LENGTH_LONG); 
       TextView v = (TextView) toast.getView().findViewById(android.R.id.message); 
       if (v != null) v.setGravity(Gravity.CENTER); 
       toast.show(); 
       break; 

      } else if ((mCoffee4ImageView.getDrawable().getConstantState() == getResources().getDrawable(R.drawable.sbp_coffee_free).getConstantState()) && myCTagUrl.equals(myTagView.getText().toString()) 
        && ((mCoffee5ImageView.getDrawable().getConstantState() != getResources().getDrawable(R.drawable.sbp_coffee_free).getConstantState()))) { 
       mCoffee5ImageView.setImageResource(R.drawable.sbp_coffee_free); 
       Toast toast = Toast.makeText(this, "Thanks!\n" + 
         "You're Over Half Way to\n" + 
         "a Free Cup of Coffee", Toast.LENGTH_LONG); 
       TextView v = (TextView) toast.getView().findViewById(android.R.id.message); 
       if (v != null) v.setGravity(Gravity.CENTER); 
       toast.show(); 
       break; 

      } else if ((mCoffee5ImageView.getDrawable().getConstantState() == getResources().getDrawable(R.drawable.sbp_coffee_free).getConstantState()) && myCTagUrl.equals(myTagView.getText().toString()) 
        && ((mCoffee6ImageView.getDrawable().getConstantState() != getResources().getDrawable(R.drawable.sbp_coffee_free).getConstantState()))) { 
       mCoffee6ImageView.setImageResource(R.drawable.sbp_coffee_free); 
       Toast toast = Toast.makeText(this, "Thanks!\n" + 
         "You Have Earned 6 Credits\n" + 
         "Towards a Free Coffee", Toast.LENGTH_LONG); 
       TextView v = (TextView) toast.getView().findViewById(android.R.id.message); 
       if (v != null) v.setGravity(Gravity.CENTER); 
       toast.show(); 
       break; 

      } else if ((mCoffee6ImageView.getDrawable().getConstantState() == getResources().getDrawable(R.drawable.sbp_coffee_free).getConstantState()) && myCTagUrl.equals(myTagView.getText().toString()) 
        && ((mCoffee7ImageView.getDrawable().getConstantState() != getResources().getDrawable(R.drawable.sbp_coffee_free).getConstantState()))) { 
       mCoffee7ImageView.setImageResource(R.drawable.sbp_coffee_free); 
       Toast toast = Toast.makeText(this, "Thanks!\n" + 
         "You Have Earned 7 Credits\n" + 
         "Towards a Free Coffee", Toast.LENGTH_LONG); 
       TextView v = (TextView) toast.getView().findViewById(android.R.id.message); 
       if (v != null) v.setGravity(Gravity.CENTER); 
       toast.show(); 
       break; 

      } else if ((mCoffee7ImageView.getDrawable().getConstantState() == getResources().getDrawable(R.drawable.sbp_coffee_free).getConstantState()) && myCTagUrl.equals(myTagView.getText().toString()) 
        && ((mCoffee8ImageView.getDrawable().getConstantState() != getResources().getDrawable(R.drawable.sbp_coffee_free).getConstantState()))) { 
       mCoffee8ImageView.setImageResource(R.drawable.sbp_coffee_free); 
       Toast toast = Toast.makeText(this, "Thanks!\n" + 
         "You Have Earned 8 Credits\n" + 
         "Towards a Free Coffee", Toast.LENGTH_LONG); 
       TextView v = (TextView) toast.getView().findViewById(android.R.id.message); 
       if (v != null) v.setGravity(Gravity.CENTER); 
       toast.show(); 
       break; 

      } else if ((mCoffee8ImageView.getDrawable().getConstantState() == getResources().getDrawable(R.drawable.sbp_coffee_free).getConstantState()) && myCTagUrl.equals(myTagView.getText().toString()) 
        && ((mCoffee9ImageView.getDrawable().getConstantState() != getResources().getDrawable(R.drawable.sbp_coffee_free).getConstantState()))) { 
       mCoffee9ImageView.setImageResource(R.drawable.sbp_free_coffee); 
       Toast toast = Toast.makeText(this, "CONGRATULATION!\n" + 
         "Your Next\n" + 
         "Cup of Coffee is on US!", Toast.LENGTH_LONG); 
       TextView v = (TextView) toast.getView().findViewById(android.R.id.message); 
       if (v != null) v.setGravity(Gravity.CENTER); 
       toast.show(); 
       break; 

      } 

      if ((mSandwich9ImageView.getDrawable().getConstantState() == getResources().getDrawable(R.drawable.sbp_free_sandwich).getConstantState()) && mySTagUrl.equals(myTagView.getText().toString())) { 
       Toast toast = Toast.makeText(this, "You Redeemed Your Free\n" + 
         "Sandwich, Thank You\n" + 
         "For Your Patronage!", Toast.LENGTH_LONG); 
       TextView v = (TextView) toast.getView().findViewById(android.R.id.message); 
       if (v != null) v.setGravity(Gravity.CENTER); 
       toast.show(); 

       return; 

      } else if ((mSandwich1ImageView.getDrawable().getConstantState() != getResources().getDrawable(R.drawable.sbp_sandwich_free).getConstantState()) && mySTagUrl.equals(myTagView.getText().toString())) { 
       mSandwich1ImageView.setImageResource(R.drawable.sbp_sandwich_free); 

       Toast toast = Toast.makeText(this, "Thanks!\n" + 
         "You Earned 1 Credit\n" + 
         "Towards a Free Sandwich", Toast.LENGTH_LONG); 
       TextView v = (TextView) toast.getView().findViewById(android.R.id.message); 
       if (v != null) v.setGravity(Gravity.CENTER); 
       toast.show(); 
       break; 

      } else if ((mSandwich1ImageView.getDrawable().getConstantState() == getResources().getDrawable(R.drawable.sbp_sandwich_free).getConstantState()) && mySTagUrl.equals(myTagView.getText().toString()) 
        && ((mSandwich2ImageView.getDrawable().getConstantState() != getResources().getDrawable(R.drawable.sbp_sandwich_free).getConstantState()))) { 
       mSandwich2ImageView.setImageResource(R.drawable.sbp_sandwich_free); 
       Toast toast = Toast.makeText(this, "Thanks!\n" + 
         "You Have Earned 2 Credits\n" + 
         "Towards a Free Sandwich", Toast.LENGTH_LONG); 
       TextView v = (TextView) toast.getView().findViewById(android.R.id.message); 
       if (v != null) v.setGravity(Gravity.CENTER); 
       toast.show(); 
       break; 

      } else if ((mSandwich2ImageView.getDrawable().getConstantState() == getResources().getDrawable(R.drawable.sbp_sandwich_free).getConstantState()) && mySTagUrl.equals(myTagView.getText().toString()) 
        && ((mSandwich3ImageView.getDrawable().getConstantState() != getResources().getDrawable(R.drawable.sbp_sandwich_free).getConstantState()))) { 
       mSandwich3ImageView.setImageResource(R.drawable.sbp_sandwich_free); 
       Toast toast = Toast.makeText(this, "Thanks!\n" + 
         "You Have Earned 3 Credits\n" + 
         "Towards a Free Sandwich", Toast.LENGTH_LONG); 
       TextView v = (TextView) toast.getView().findViewById(android.R.id.message); 
       if (v != null) v.setGravity(Gravity.CENTER); 
       toast.show(); 
       break; 

      } else if ((mSandwich3ImageView.getDrawable().getConstantState() == getResources().getDrawable(R.drawable.sbp_sandwich_free).getConstantState()) && mySTagUrl.equals(myTagView.getText().toString()) 
        && ((mSandwich4ImageView.getDrawable().getConstantState() != getResources().getDrawable(R.drawable.sbp_sandwich_free).getConstantState()))) { 
       mSandwich4ImageView.setImageResource(R.drawable.sbp_sandwich_free); 
       Toast toast = Toast.makeText(this, "Thanks!\n" + 
         "You Have Earned 4 Credits\n" + 
         "Towards a Free Sandwich", Toast.LENGTH_LONG); 
       TextView v = (TextView) toast.getView().findViewById(android.R.id.message); 
       if (v != null) v.setGravity(Gravity.CENTER); 
       toast.show(); 
       break; 

      } else if ((mSandwich4ImageView.getDrawable().getConstantState() == getResources().getDrawable(R.drawable.sbp_sandwich_free).getConstantState()) && mySTagUrl.equals(myTagView.getText().toString()) 
        && ((mSandwich5ImageView.getDrawable().getConstantState() != getResources().getDrawable(R.drawable.sbp_sandwich_free).getConstantState()))) { 
       mSandwich5ImageView.setImageResource(R.drawable.sbp_sandwich_free); 
       Toast toast = Toast.makeText(this, "Thanks!\n" + 
         "You're Over Half Way to\n" + 
         "Free Sandwich", Toast.LENGTH_LONG); 
       TextView v = (TextView) toast.getView().findViewById(android.R.id.message); 
       if (v != null) v.setGravity(Gravity.CENTER); 
       toast.show(); 
       break; 

      } else if ((mSandwich5ImageView.getDrawable().getConstantState() == getResources().getDrawable(R.drawable.sbp_sandwich_free).getConstantState()) && mySTagUrl.equals(myTagView.getText().toString()) 
        && ((mSandwich6ImageView.getDrawable().getConstantState() != getResources().getDrawable(R.drawable.sbp_sandwich_free).getConstantState()))) { 
       mSandwich6ImageView.setImageResource(R.drawable.sbp_sandwich_free); 
       Toast toast = Toast.makeText(this, "Thanks!\n" + 
         "You Have Earned 6 Credits\n" + 
         "Towards a Free Sandwich", Toast.LENGTH_LONG); 
       TextView v = (TextView) toast.getView().findViewById(android.R.id.message); 
       if (v != null) v.setGravity(Gravity.CENTER); 
       toast.show(); 
       break; 

      } else if ((mSandwich6ImageView.getDrawable().getConstantState() == getResources().getDrawable(R.drawable.sbp_sandwich_free).getConstantState()) && mySTagUrl.equals(myTagView.getText().toString()) 
        && ((mSandwich7ImageView.getDrawable().getConstantState() != getResources().getDrawable(R.drawable.sbp_sandwich_free).getConstantState()))) { 
       mSandwich7ImageView.setImageResource(R.drawable.sbp_sandwich_free); 
       Toast toast = Toast.makeText(this, "Thanks!\n" + 
         "You Have Earned 7 Credits\n" + 
         "Towards a Free Sandwich", Toast.LENGTH_LONG); 
       TextView v = (TextView) toast.getView().findViewById(android.R.id.message); 
       if (v != null) v.setGravity(Gravity.CENTER); 
       toast.show(); 
       break; 

      } else if ((mSandwich7ImageView.getDrawable().getConstantState() == getResources().getDrawable(R.drawable.sbp_sandwich_free).getConstantState()) && mySTagUrl.equals(myTagView.getText().toString()) 
        && ((mSandwich8ImageView.getDrawable().getConstantState() != getResources().getDrawable(R.drawable.sbp_sandwich_free).getConstantState()))) { 
       mSandwich8ImageView.setImageResource(R.drawable.sbp_sandwich_free); 
       Toast toast = Toast.makeText(this, "Thanks!\n" + 
         "You Have Earned 8 Credits\n" + 
         "Towards a Free Sandwich", Toast.LENGTH_LONG); 
       TextView v = (TextView) toast.getView().findViewById(android.R.id.message); 
       if (v != null) v.setGravity(Gravity.CENTER); 
       toast.show(); 
       break; 

      } else if ((mSandwich8ImageView.getDrawable().getConstantState() == getResources().getDrawable(R.drawable.sbp_sandwich_free).getConstantState()) && mySTagUrl.equals(myTagView.getText().toString()) 
        && ((mSandwich9ImageView.getDrawable().getConstantState() != getResources().getDrawable(R.drawable.sbp_sandwich_free).getConstantState()))) { 
       mSandwich9ImageView.setImageResource(R.drawable.sbp_free_sandwich); 
       Toast toast = Toast.makeText(this, "CONGRATULATION!\n" + 
         "Your Next\n" + 
         "Sandwich is on US!", Toast.LENGTH_LONG); 
       TextView v = (TextView) toast.getView().findViewById(android.R.id.message); 
       if (v != null) v.setGravity(Gravity.CENTER); 
       toast.show(); 
       break; 

      } 
     } 
    } 


    private void setCvisible(){ 

     cflag = true; 
     mCoffee1ImageView.setImageResource(R.drawable.sbp_coffee_free); 
     SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); 
     prefs.edit().putBoolean("selected", true).commit(); 
    } 

    private void setCInvisible(){ 

     cflag = false; 
     mCoffee1ImageView.setImageResource(R.drawable.sbp_coffee); 
     // save the flag 
    } 


    @Override 
    public void onConfigurationChanged(final Configuration newConfig){ 
     super.onConfigurationChanged(newConfig); 
     mDrawerToggle.onConfigurationChanged(newConfig); 
    } 
    @Override 
    public void onBackPressed(){ 
     if(mDrawerLayout.isDrawerOpen(GravityCompat.START)){ 
      mDrawerLayout.closeDrawer(GravityCompat.START); 
     }else{ 
      super.onBackPressed(); 
     } 
    } 
    @Override 
    public void onSaveInstanceState(final Bundle outState){ 
     super.onSaveInstanceState(outState); 
     outState.putInt(NAV_ITEM_ID, mNavItemId); 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     final int id = item.getItemId(); 

     if(id== android.support.v7.appcompat.R.id.home){ 
      return mDrawerToggle.onOptionsItemSelected(item); 
     } 
     return super.onOptionsItemSelected(item); 
    } 

    /** 
    * -Handles clicks on the navigation menu 
    * @param menuItem 
    * @return 
    */ 
    @Override 
    public boolean onNavigationItemSelected(final MenuItem menuItem) { 
     //Update highlighted item in the navigation menu 
     menuItem.setChecked(true); 
     mNavItemId = menuItem.getItemId(); 

     // Time gap after closing the navigation to see animation 
     mDrawerLayout.closeDrawer(GravityCompat.START); 
     mDrawerActionHandler.postDelayed(new Runnable() { 
      @Override 
      public void run() { 
       navigate(menuItem.getItemId()); 
      } 
     }, DRAWER_CLOSE_DELAY_MS); 
     return true; 
    } 



    @Override 
    public void onNewIntent(Intent intent) { 
     setIntent(intent); 
     resolveIntent(intent); 
    } 
} 

答えて

1

最善の方法は、データベース内のいくつかのエントリを格納することです。 しかし、必ずあなたのDrawableID(R.drawable.coffee ..)をSharedPreferenceに保存することもできます。 私はそれが最良の方法ではないと思うが、うまくいく。

あなたは(あなたが唯一のいくつかの静的エントリを持っているかもしれないか)データベースを使用したくない場合は、あなたのソリューションは、次のようになります。

SharedPreferences setting = getSharedPreferences("Images", 0); 
String image = setting.getString("Image"+(iterator), "empty"); 

// Set Image to ImageButton 
if(!"empty".equals(image)) 
imageButton.setImageResource(Integer.parseInt(image)); 

、あなたのデータを読み込む方法です。 同じ方法であなたのdrawableIDを保存してください。

+0

私は上記のコードを更新しました..私はそれがTrueまたはFalseの値を保存していると信じていますが、今は画像を更新していません。ところで、私が更新しようとしている画像は、main_activity.xmlではなくcoffee_fragment.xmlにありますが、私はMainActivityですべてをやろうとしています。すべてがうまく見えますが、私はエラーが発生しない、それは単に画像を更新していないだけです。どんな助けもありがとう。 – Sobo

+0

私はまだ+(イテレータ)を理解していませんが、私はあなたの答えを適応させることができました。ありがとう – Sobo

関連する問題