2016-11-14 5 views
1

共有設定を保存するために次のコードを使用しています。getSharedPreferncesは、別のアクティビティで正常に動作する1つのアクティビティでのみnullを返します。

sharedpreferences = getSharedPreferences("MyPrefs", Context.MODE_PRIVATE); 
SharedPreferences.Editor editor = sharedpreferences.edit(); 
editor.clear(); 
editor.putString("NIC",nic); 
editor.putString("fName",fName); 
editor.putString("mName",mName); 
editor.putString("lName",lName); 
editor.putString("aNo",aNo); 
editor.putString("lane",aLane); 
editor.putString("city",aCity); 
editor.putString("contactNo",contactNo); 
editor.putString("regDate",regDate); 
editor.putString("cardNo",cardNo); 
editor.putString("balance",balance); 
editor.commit(); 

次のコードを使用して、Profileアクティビティで共有設定を取得しても問題ありません。

private void getPrefs() { 
     SharedPreferences userDetails = Profile.this.getSharedPreferences("MyPrefs", Context.MODE_PRIVATE); 
     id = userDetails.getString("NIC", ""); 
     f_Name = userDetails.getString("fName", ""); 
     m_Name = userDetails.getString("mName", ""); 
     l_Name = userDetails.getString("lName", ""); 
     contact_no = userDetails.getString("contactNo", ""); 
     a_No = userDetails.getString("aNo", ""); 
     a_Lane = userDetails.getString("lane", ""); 
     a_City = userDetails.getString("city", ""); 
     card_No = userDetails.getString("cardNo", ""); 
     reg_Date = userDetails.getString("regDate", ""); 
    } 

しかし、別のアクティビティで同じものを使用すると、idにnullが返されます。

private void getPrefs() { 
     SharedPreferences userDetails = Travel.this.getSharedPreferences("MyPrefs", Context.MODE_PRIVATE); 
     id = userDetails.getString("NIC", ""); 
} 

mainfest.xml

<activity 
      android:name=".Profile" 
      android:configChanges="orientation|keyboardHidden|screenSize" 
      android:label="@string/app_name"> 
      <intent-filter> 
       <action android:name="com.example.pavsaranga.scat.PROFILE" /> 
       <category android:name="android.intent.category.DEFAULT" /> 
      </intent-filter> 
     </activity> 
     <activity 
      android:name=".Travel" 
      android:configChanges="orientation|keyboardHidden|screenSize" 
      android:label="@string/app_name"> 
      <intent-filter> 
       <action android:name="com.example.pavsaranga.scat.TRAVEL" /> 
       <category android:name="android.intent.category.DEFAULT" /> 
      </intent-filter> 
     </activity> 

は、誰もがこの問題を解決するために私を助けてくださいことができますか? 旅行活動

の完全なコード
public class Travel extends AppCompatActivity { 

    TableLayout tl; 
    StringBuilder sb; 
    String id, result; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.travel); 
     tl = (TableLayout)findViewById(R.id.tlTravel); 
     getPrefs(); 
     Thread t1 = new Thread(new Runnable() { 
      @Override 
      public void run() { 
       getResponse(); 
      } 
     }); 
     t1.start(); 
    } 

    private void getPrefs() { 
     SharedPreferences userDetails = getApplicationContext().getSharedPreferences("MyPrefs", Context.MODE_PRIVATE); 
     id = userDetails.getString("NIC", ""); 
    }} 
+0

それはnullを返すべきではありません。フォールバック文字列を空の文字列に設定しました。文字列 '' null ''を実際に保存したのでしょうか? –

+0

Profileアクティビティを使用していません。設定済み共有設定を表示できます。 –

+0

私が言ったように、文字列がnullである理由はありません。アクティビティコードを全部表示してください。 –

答えて

0

getApplicationContext()

への変更このまたはProfile.thisように:

 SharedPreferences userDetails = getApplicationContext() 
.getSharedPreferences("MyPrefs", Context.MODE_PRIVATE); 
+1

まだ、Travelアクティビティに対してのみnullが返されます。プロフィール活動のためにそれはうまく働いていて、私はセットの共有選好を見ることができます。 –

+0

質問 –

+0

のアクティビティの完全なコードを追加しました。.ProfileコンテキストでPrefsを作成したことがありますか? すべてのプリファレンスは、@Ahmadが示唆したのと同じコンテキストで読み書きする必要があります。 .Profileアクティビティでコードを変更して、.Profileではなく、アプリケーションコンテキストにプリファレンスを書き込む必要があります。 – Grisgram

関連する問題