2017-09-12 17 views
0

共有設定が設定されている場合は、まずアプリを表示させようとしています。そうでない場合は、入力したページを開き、それを保存しておいて後で使用する必要があります。メインアクティビティが開く(else文が実行される)ため、いくつかの共有設定が見つかったり、コードが間違っているようです。ここで別のクラスからsharedPreferencesを読み込まない

は私Mainactivityです:

 public class MainActivity extends AppCompatActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this); 
    boolean check = sharedPreferences.getBoolean("Check",false); 
    if(check){ 
     //Intent intent; 
     Intent SharedPrefsIntent = new Intent(MainActivity.this, SharedPrefs.class); 
     startActivity(SharedPrefsIntent); } 
    else { 
    setContentView(R.layout.activity_main); 
    TextView brands = (TextView) findViewById(R.id.brands); 

そして、ここではSharedPrefsです:

 public class SharedPrefs extends MainActivity { 
//public static Context context; 
EditText ed1,ed2,ed3; 
Button b1; 

public static final String MyPREFERENCES = "MyPrefs" ; 
public static final String Name = "nameKey"; 
public static final String Phone = "phoneKey"; 
public static final String Email = "emailKey"; 

SharedPreferences sharedpreferences; 

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

    ed1=(EditText)findViewById(R.id.editText); 
    ed2=(EditText)findViewById(R.id.editText2); 
    ed3=(EditText)findViewById(R.id.editText3); 

    b1=(Button)findViewById(R.id.button); 
    sharedpreferences = getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE); 

    b1.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      String n = ed1.getText().toString(); 
      String ph = ed2.getText().toString(); 
      String e = ed3.getText().toString(); 

      SharedPreferences.Editor editor = sharedpreferences.edit(); 

      editor.putString(Name, n); 
      editor.putString(Phone, ph); 
      editor.putString(Email, e); 
      editor.commit(); 
      Toast.makeText(SharedPrefs.this,"Thanks",Toast.LENGTH_LONG).show(); 
     } 
    }); 
     } 

    } 

私は正直でなければならない私は、Javaが共有好みを探したい場所はかなりわからないんだけど、 "これは、アプリの実行を行い、少なくとも。SharedPrefs{}クラスインサイド

+0

'ブールチェック= sharedPreferences.getBoolean(「チェック」でそれを使用するために、 false); '。あなたはその値を読み取ろうとします。しかし、どこに書いたのですか? – greenapps

+1

この行を置き換えます。 sharedpreferences = getSharedPreferences(MyPREFERENCES、Context.MODE_PRIVATE); by sharedpreferences = PreferenceManager.getDefaultSharedPreferences(this); 非常に最初のgetBoolean()呼び出しはfalseを返します。それに応じて条件文を更新してください。 – Napolean

+0

ありがとう、ありがとうございました。私はあなたの提案にgetSharedPreferencesを変更し、それは動作します。また、getBooleanのif文をif(!check)に変更し、今度はSharedPrefsクラスに移りました。すばらしいです。次に、Submitボタンを押してMainActivityクラスに移動し、それからSharedPrefsクラスに戻します。それでは、Shared Preferencesがあり、MainActivityクラスに行くのを読んではいけませんか? –

答えて

0

、変数

を宣言します editor.commit();onClick(View v)メソッド内で同じクラスで
public static boolean CHECK_VALUE = false; 

、実際にあなたがここにチェックするSharedPreferenceを必要としない

CHECK_VALUE = true; 

そしてOnCreate()方法

if(!SharedPrefs.CHECK_VALUE){ 
    //SharedPreferences was not used before 
    Intent SharedPrefsIntent = new Intent(MainActivity.this, SharedPrefs.class); 
    startActivity(SharedPrefsIntent); 
    } 
else { 
//SharedPreference are already set 
//Do your stuffs 
} 

内部MainActivity{}クラスを設定します。あなたが本当にやり場合、SharedPrefs{}クラスのOnClick()メソッド内

editor.putBoolean("check", true); 

を入れてから、それを得るためにかMainActivity

SharedPreferences sharedPreferences = getSharedPreferences(SharedPrefs.MyPREFERENCES, Context.MODE_PRIVATE); 
Boolean Check = sharedPreferences.getBoolean("check", false); 
if(!check){ 
    //SharedPreferences was not used before 
    Intent SharedPrefsIntent = new Intent(MainActivity.this, SharedPrefs.class); 
    startActivity(SharedPrefsIntent); 
} 
else { 
    //SharedPreference are already set 
    //Do your stuffs 
} 
関連する問題