2016-03-24 27 views
0

Her yeri aradım ve örnekleri izlemeyi denedim ancak SharedPreferences'ı uygulayamıyorum.ImageView SharedPreference'a dayanıyor

Çok düşük teknolojili bir PunchCard oluşturuyorum. NFCTag, "kahve" yazan başka bir metin alanın "sandviç" yazan bir metin alanına sahip ve daha sonra aynı ada sahip 2 Dizgiye sahibim. Kahve Etiketine dokunun, kahve görüntüsünü değiştirir, Sandviç etiketine dokunun, sandviç görüntüsünü değiştirir.

Sorum şimdi Tercihi kurtarmak için bunu elde etmek mümkün ama o görüntüyü güncellenmiyorsa ... olduğunu herhangi bir öneri

https://github.com/soboapps/PunchCard

.. mutluluk duyacağız - Bu size bir fikir vermek neyin Yapmaya çalışıyorum.

İşte benim kodu (Ben bir karışıklık olduğunu biliyorum)

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); 
    } 
} 

cevap

1

iyi yolu bir veritabanında birkaç giriş saklamaktır olduğunu. Ancak, DrawableID (R.drawable.coffee ..) öğenizi bir SharedPreference'da da depolayabildiğinizden emin olabilirsiniz. Bence bu en iyi yol değil ama işe yarıyor. Eğer bir veritabanı kullanmak (ya da belki sadece birkaç statik girdileri var) için istemiyorsanız

çözüm olabilir:

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)); 

Yani Verilerinizi okumak nasıl. DrawableID'nizi aynı şekilde ve gitti olarak kaydedin.

+0

Yukarıdaki kodu güncelledim. Şu anda True veya False değerini kaydettiğine inanıyorum, ancak şimdi Images'i güncelleştirmiyor. BTW, güncellemeye çalıştığım görüntüler coffee_fragment.xml dosyasında ve main_activity.xml değil, ama ben her şeyi MainActivity üzerinden yapmaya çalışıyorum. Her şey iyi görünüyor ve herhangi bir hata görmüyorum, sadece görüntüleri güncellemiyor. Herhangi bir yardım takdir edilecektir. – Sobo

+0

Hala ben (+ yineleyici) anlamıyorum rağmen ben senin cevabını adapte edebildi ve işler harika çalışıyor. Teşekkürler – Sobo