2013-05-30 72 views
0

在我的示例中,我在一个活动中输入了手机号码,邮件内容。在离开该活动之前,我将这些信息保存在“共享首选项”。在其他活动,我试图让那些暴徒没有,消息,我能够得到但无法得到该消息(第二值)。请帮助我解决这个问题。我无法检索共享首选项中的第二个值

DefaultDetails.java

package com.example.nirbhaya; 

import java.util.regex.Pattern; 

import android.app.Activity; 
import android.content.Intent; 
import android.content.SharedPreferences; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.Toast; 

public class DefaultDetails extends Activity implements OnClickListener{ 

    Button save,reset; 
    EditText dMob,dMsg,dEmail; 
    String defMobNo,defMsg,defEmail; 
    SharedPreferences DefaultData; 

    private static final String TAG = "DD-Activity"; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.defaultdetails); 

     initializing(); 

    } 
    private void initializing() { 
     // TODO Auto-generated method stub 


     save = (Button)findViewById(R.id.bsave1); 
     reset = (Button)findViewById(R.id.bReset); 

     dMob = (EditText)findViewById(R.id.etDefMobNo); 
     dMsg = (EditText)findViewById(R.id.etDefMsg); 
     dEmail = (EditText)findViewById(R.id.etDefEmail); 

     save.setOnClickListener(this); 
     reset.setOnClickListener(this); 


    } 
    @Override 
    public void onClick(View arg0) { 
     // TODO Auto-generated method stub 
     switch(arg0.getId()) 
     { 
     case R.id.bsave1: 
      defMobNo = dMob.getText().toString(); 
      defMsg = dMsg.getText().toString(); 
      defEmail = dEmail.getText().toString(); 
       Log.i(TAG,"DONE"); 
       DefaultData = getSharedPreferences("defMobileNo",0); 
       SharedPreferences.Editor store = DefaultData.edit(); 
       store.putString("defMobileNo", defMobNo); 
       store.putString("defMessgae", defMsg); 
       store.putString("defEMail", defEmail); 
       store.commit(); 
       Intent openStartingPoint = new Intent (getApplicationContext(), CurrentDetails.class); 
       startActivity(openStartingPoint); 
      break; 
     case R.id.bReset: 
      ((EditText) findViewById(R.id.etDefMobNo)).setText(""); 
      ((EditText) findViewById(R.id.etDefEmail)).setText(""); 
      ((EditText) findViewById(R.id.etDefMsg)).setText(""); 
      break; 
     } 
    } 
} 

DefSMS.java

package com.example.nirbhaya; 

import android.app.Activity; 
import android.content.Intent; 
import android.content.SharedPreferences; 
import android.os.Bundle; 
import android.telephony.SmsManager; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.Toast; 

public class DefSms extends Activity{ 

    Button buttonSend; 
    String defNo,defMsg; 
    SharedPreferences DefaultData; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.defsms); 

     DefaultData = getSharedPreferences("defMobileNo",0); 
     final String defNo = DefaultData.getString("defMobileNo","Couldn't load data"); 

     DefaultData = getSharedPreferences("defMessgae",0); 
     final String defMsg = DefaultData.getString("defMessgae","Couldn't load data"); 

     buttonSend = (Button) findViewById(R.id.buttonSend); 

     buttonSend.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 

       try { 
        SmsManager smsManager = SmsManager.getDefault(); 
        smsManager.sendTextMessage(defNo, null, defMsg, null, null); 
        Toast.makeText(getApplicationContext(), "SMS Sent!", 
          Toast.LENGTH_LONG).show(); 
       } catch (Exception e) { 
        Toast.makeText(getApplicationContext(), 
          "SMS faild, please try again later!", 
          Toast.LENGTH_LONG).show(); 
        e.printStackTrace(); 
       } 

      } 
     }); 

    } 
} 

这里没有高清获取消息为无法加载数据 请帮我

+1

删除此行** DefaultData = getSharedPreferences(“defMessgae”,0); **在DefSMS.java – Mahesh

+0

是的,现在它的工作,但如何? – KCRaju

+0

您试图获取名为defMessgae的共享首选项,它甚至不存在。所以当你尝试访问它时,android会用缺省值创建一个新的首选项。这就是为什么你得到“无法加载数据” – Mahesh

回答

0

替换此:

DefaultData = getSharedPreferences("defMobileNo",0); 
    final String defNo = DefaultData.getString("defMobileNo","Couldn't load data"); 

    final String defMsg = DefaultData.getString("defMessgae","Couldn't load data"); 
0

这是如何工作的基本sharedpreference

来存储值

SharedPreferences preferences = getSharedPreferences("AUTHENTICATION_FILE_NAME", Context.MODE_WORLD_WRITEABLE); 
SharedPreferences.Editor editor = preferences.edit(); 
editor.putString("Name","myNameisnothing"); 
editor.commit(); 

为了获取值

SharedPreferences prfs = getSharedPreferences("AUTHENTICATION_FILE_NAME", Context.MODE_PRIVATE); 
String name = prfs.getString("Name", ""); 

这样,它'd返回名称的值myNameisnothing。 PS.Correct我如果我错了。

0

您错误地在DefSMS.java

使用 DefaultData = getSharedPreferences("defMessgae",0);

请删除这一点,它会正常工作。

您试图获取名为defMessgae的共享首选项,该共享首选项甚至不存在。所以当你尝试访问它时,android会用缺省值创建一个新的首选项。这就是为什么你得到“无法加载数据”