2017-01-01 1 views
1

それぞれに1つのボタンを持つ3つのアクティビティがあります。 btn1のAct1、btn2のAct2、btn3のAct3。 ImageView1、imageView2、およびimageView3という3つのimageViewsを持つMainActivityとして別のアクティビティがありますが、これらはすべて最初は見えません。 act1のbtn1をクリックすると、MainActivityのimageView1が表示され、btn1を再度クリックすると、imageView1が再び表示されなくなります。 imageView2とimageView3も同様です。私はこれまでのところ、このコードを持っている:彼らはうまく機能makeとvisibleのためのkeyPreferenceを定義するimageView

public class PublicSharedPreferences { 



    public static void setDefaults(String key, String value, Context context) { 
     SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); 
     SharedPreferences.Editor editor = prefs.edit(); 
     editor.putString(key, value); 
     editor.commit(); 
    } 

    public static String getDefaults(String key, Context context) { 
     SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context); 
     return preferences.getString(key, null); 
    } 


} 

 ImageView imgView1 = (ImageView) findViewById(R.id.imgView1); 
String visibilityStr= PublicSharedPreferences.getDefaults("keyVisibility1", getApplicationContext()); 

if (visibilityStr.equals("0")) 
    imgView1.setVisibility(View.INVISIBLE); 
else 
    imgView1.setVisibility(View.VISIBLE); 


ImageView imgView2 = (ImageView) findViewById(R.id.imgView2); 
String visibilityStr= PublicSharedPreferences.getDefaults("keyVisibility2", getApplicationContext()); 

if (visibilityStr.equals("0")) 
    imgView2.setVisibility(View.INVISIBLE); 
else 
    imgView2.setVisibility(View.VISIBLE); 



ImageView imgView3 = (ImageView) findViewById(R.id.imgView3); 
String visibilityStr= PublicSharedPreferences.getDefaults("keyVisibility3", getApplicationContext()); 

if (visibilityStr.equals("0")) 
    imgView3.setVisibility(View.INVISIBLE); 
else 
    imgView3.setVisibility(View.VISIBLE); 

とSharedPreferencesクラス:3 imageViewsと

Activity1 

public class Activity1 extends AppCompatActivity{ 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity1); 

Button btn1 = (Button) findViewById(R.id.btn1); 
btn1.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
     String visibilityStr = PublicSharedPreferences.getDefaults("keyVisibility1", getApplicationContext()); 

     if (visibilityStr != null) { 
      if (visibilityStr.equals("0")) { 
       Toast.makeText(act1.this, "it visibled", Toast.LENGTH_SHORT).show(); 
       visibilityStr = "1"; 
btn1.setImageResource(R.mipmap.img1); 

      } else { 
       visibilityStr = "0"; 
       Toast.makeText(act1.this, "it invisibled", Toast.LENGTH_SHORT).show(); 
btn1.setImageResource(R.mipmap.img2); 

      } 
     } else { 
      visibilityStr = "1"; 
      Toast.makeText(act1.this, "it visibled", Toast.LENGTH_SHORT).show(); 
btn1.setImageResource(R.mipmap.img1); 

     } 

     PublicSharedPreferences.setDefaults("keyVisibility1", visibilityStr, getApplicationContext()); 

    } 
}); 
} 





Activity2 

public class Activity2 extends AppCompatActivity{ 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity2); 


Button btn1 = (Button) findViewById(R.id.btn2); 
btn1.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
     String visibilityStr = PublicSharedPreferences.getDefaults("keyVisibility2", getApplicationContext()); 

     if (visibilityStr != null) { 
      if (visibilityStr.equals("0")) { 
       Toast.makeText(act2.this, "it visibled", Toast.LENGTH_SHORT).show(); 
btn2.setImageResource(R.mipmap.img1); 

       visibilityStr = "1"; 
      } else { 
       visibilityStr = "0"; 
       Toast.makeText(act2.this, "it invisibled", Toast.LENGTH_SHORT).show(); 
btn2.setImageResource(R.mipmap.img2); 

      } 
     } else { 
      visibilityStr = "1"; 
      Toast.makeText(act2.this, "it visibled", Toast.LENGTH_SHORT).show(); 
btn2.setImageResource(R.mipmap.img1); 

     } 

     PublicSharedPreferences.setDefaults("keyVisibility2", visibilityStr, getApplicationContext()); 

    } 
}); 
} 



Activity3 

public class Activity3 extends AppCompatActivity{ 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity3); 

Button btn1 = (Button) findViewById(R.id.btn3); 
btn1.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
     String visibilityStr = PublicSharedPreferences.getDefaults("keyVisibility3", getApplicationContext()); 

     if (visibilityStr != null) { 
      if (visibilityStr.equals("0")) { 
       Toast.makeText(act3.this, "it visibled", Toast.LENGTH_SHORT).show(); 
Btn3.setImageResource(R.mipmap.img1); 

       visibilityStr = "1"; 
      } else { 
       visibilityStr = "0"; 
       Toast.makeText(act3.this, "it invisibled", Toast.LENGTH_SHORT).show(); 
btn3.setImageResource(R.mipmap.img2); 

      } 
     } else { 
      visibilityStr = "1"; 
      Toast.makeText(act3.this, "it visibled", Toast.LENGTH_SHORT).show(); 
btn3.setImageResource(R.mipmap.img1); 

     } 

     PublicSharedPreferences.setDefaults("keyVisibility3", visibilityStr, getApplicationContext()); 
    } 
}); 
} 

MainActivityを。しかし、問題は、私がbtn1をクリックすると、MainActivityのすべてのimageViewsが変更(可視または不可視になります)またはbtn3をクリックすると、すべてのimageViewsが変更されることです。私はbtn1だけを変更imageView1とbtn2だけ変更imageView2とbtn3は、imageViewsのすべてを変更するボタンの1つではなく、imageView3を変更します。私は問題は、私はそれらのすべてのためのただ一つの重要な嗜好を定義したことだと思います。しかし、私はどのように私はそれぞれのための特別なキーを定義することができます知りません。どうやってやるの?コードを変更して書き直してください。 tnx。

+0

画像設定は、常時またはアプリケーションの実行中に保存する必要がありますか? ケース1の場合、共有設定には3つの異なるキーを使用します。 ケース2の場合、ユーティリティクラスを作成し、3つの静的変数にデータを保存します。 –

答えて

2

すべての3つの変数に1つの変数を使用します。

各アクティビティ/ ImageViewの

 ImageView imgView1 = (ImageView) findViewById(R.id.imgView1); 
 
//keyVisibility1 
 
String visibilityStr= PublicSharedPreferences.getDefaults("keyVisibility1", getApplicationContext()); 
 

 
if (visibilityStr.equals("0")) 
 
    imgView1.setVisibility(View.INVISIBLE); 
 
else 
 
    imgView1.setVisibility(View.VISIBLE); 
 

 

 
ImageView imgView2 = (ImageView) findViewById(R.id.imgView2); 
 
//keyVisibility2 
 
visibilityStr= PublicSharedPreferences.getDefaults("keyVisibility2", getApplicationContext()); 
 

 
if (visibilityStr.equals("0")) 
 
    imgView2.setVisibility(View.INVISIBLE); 
 
else 
 
    imgView2.setVisibility(View.VISIBLE); 
 

 

 

 
ImageView imgView3 = (ImageView) findViewById(R.id.imgView3); 
 
//keyVisibility3 
 
visibilityStr= PublicSharedPreferences.getDefaults("keyVisibility3", getApplicationContext()); 
 

 
if (visibilityStr.equals("0")) 
 
    imgView3.setVisibility(View.INVISIBLE); 
 
else 
 
    imgView3.setVisibility(View.VISIBLE);

(またkeyVisibility1、keyVisibility2とkeyVisibility3に各活性の変化)

+0

その通り。しかし、私はボタンのためのこのキーを書くとき、それは仕事をdosent。どうして? – nirvana

+0

上記のコードを編集して、ここにコメントします。私はwahtが問題であるのを見る –

+0

コード(keyVisibilities) – nirvana

0

ための異なる変数が別のクラス名に3つの静的変数を作成します定数。あなたはBTN1をクリックすると偽

public class Constant() { 
    public static Boolean firstButton = false; 
    public static Boolean secondButton = false; 
    public static Boolean thirdButton = false; 
} 

でそれらを初期化する今、あなたのactivity1の、あなたの他の活動に今、この

btn1.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Constant.firstButton = !Constant.firstButton; 
       // start new Activity 
      } 
     }); 

を行います。あなたのonCreateMethodeでそれを行うだけです

imageView1.setVisibility(Constant.firstButton ? View.Visible: View.Gone); 
関連する問題