联系人选取活性存储数据,除非后退按钮按下
我寻觅&搜查,但似乎无法想出解决办法:
我有打开,那么你按下一个按钮,它会弹出联系人挑选的活动。选择联系后,它返回到活动状态,并将名称和#置于各自的框中。现在,我把home键,再次选择该应用程序重新和值仍然是他们的..这是很好的,但是当我按下“返回”按钮我的程序关闭并重新打开时,失去了它的价值联系人选取活性存储数据,除非后退按钮按下
public class speed_dial_setup extends Activity {
/** Called when the activity is first created. */
private static final int CONTACT_PICKER_RESULT1 = 1001;
private static final int CONTACT_PICKER_RESULT2 = 2002;
private static final int CONTACT_PICKER_RESULT3 = 3003;
private static final int CONTACT_PICKER_RESULT4 = 4004;
private static final int CONTACT_PICKER_RESULT5 = 5005;
private static final String DEBUG_TAG = null;
EditText pNumber1;
Button cPICKER1,cPICKER2,cPICKER3,cPICKER4, cPICKER5;
// SharedPreferences sharedPref = getSharedPreferences("pNumber1",MODE_PRIVATE);
// String webViewChoice = sharedPref.getString("pNumber1","null");
private static final String empty = "";
private static String selectedNumber = "", selectedName = "";
private static String phoneNumber = "", phoneName = "";
public static String name1 = "", name2 = "", name3 = "", name4 = "", name5 = "";
public static String phone1 = "", phone2 = "", phone3 = "", phone4 = "", phone5 = "";
private EditText phName1, phName2, phName3, phName4, phName5;
private EditText phNumb1, phNumb2, phNumb3, phNumb4, phNumb5;
SharedPreferences sharedPref;
SharedPreferences.Editor prefEditor;
private static int phoneIdx = 0, nameIdx = 0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
cPICKER1 = (Button) findViewById(R.id.do_email_picker1);
cPICKER2 = (Button) findViewById(R.id.do_email_picker2);
cPICKER3 = (Button) findViewById(R.id.do_email_picker3);
cPICKER4 = (Button) findViewById(R.id.do_email_picker4);
cPICKER5 = (Button) findViewById(R.id.do_email_picker5);
phName1 = (EditText) findViewById(R.id.name_text1);
phName2 = (EditText) findViewById(R.id.name_text2);
phName3 = (EditText) findViewById(R.id.name_text3);
phName4 = (EditText) findViewById(R.id.name_text4);
phName5 = (EditText) findViewById(R.id.name_text5);
phNumb1 = (EditText) findViewById(R.id.phone_number1);
phNumb2 = (EditText) findViewById(R.id.phone_number2);
phNumb3 = (EditText) findViewById(R.id.phone_number3);
phNumb4 = (EditText) findViewById(R.id.phone_number4);
phNumb5 = (EditText) findViewById(R.id.phone_number5);
pNumber1 = (EditText) findViewById(R.id.phone_number1);
cPICKER1.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
Intent contactPickerIntent = new Intent(Intent.ACTION_PICK,
Contacts.CONTENT_URI);
startActivityForResult(contactPickerIntent, CONTACT_PICKER_RESULT1);
}
});
cPICKER2.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
Intent contactPickerIntent2 = new Intent(Intent.ACTION_PICK,
Contacts.CONTENT_URI);
startActivityForResult(contactPickerIntent2, CONTACT_PICKER_RESULT2);
}
});
cPICKER3.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
Intent contactPickerIntent3 = new Intent(Intent.ACTION_PICK,
Contacts.CONTENT_URI);
startActivityForResult(contactPickerIntent3, CONTACT_PICKER_RESULT3);
}
});
cPICKER4.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
Intent contactPickerIntent4 = new Intent(Intent.ACTION_PICK,
Contacts.CONTENT_URI);
startActivityForResult(contactPickerIntent4, CONTACT_PICKER_RESULT4);
}
});
cPICKER5.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
Intent contactPickerIntent5 = new Intent(Intent.ACTION_PICK,
Contacts.CONTENT_URI);
startActivityForResult(contactPickerIntent5, CONTACT_PICKER_RESULT4);
}
});
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK)
{
Cursor cursor = null;
phoneNumber = "";
phoneName = "";
List<String> allNumbers = new ArrayList<String>();
try
{
Uri result = data.getData();
String id = result.getLastPathSegment();
cursor = getContentResolver().query(Phone.CONTENT_URI, null,
Phone.CONTACT_ID + "=?", new String[] { id }, null);
phoneIdx = cursor.getColumnIndex(Phone.DATA);
nameIdx = cursor.getColumnIndex(Phone.DISPLAY_NAME);
if (cursor.moveToFirst()) {
while (cursor.isAfterLast() == false) {
phoneNumber = cursor.getString(phoneIdx);
phoneName = cursor.getString(nameIdx);
allNumbers.add(phoneNumber);
cursor.moveToNext();
}
}
else
{
//no results actions
}
}
catch (Exception e)
{
//error actions
}
finally
{
if (cursor != null)
{
cursor.close();
}
final CharSequence[] items = allNumbers.toArray(new String[allNumbers.size()]);
AlertDialog.Builder builder = new AlertDialog.Builder(speed_dial_setup.this);
builder.setTitle("Choose a number");
builder.setItems(items, new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int item)
{
selectedNumber = items[item].toString();
selectedNumber = selectedNumber.replace("-", "");
}
});
AlertDialog alert = builder.create();
if(allNumbers.size() > 1)
{
alert.show();
}
else
{
selectedNumber = phoneNumber.toString();
selectedNumber = selectedNumber.replace("-", "");
selectedName = phoneName.toString();
}
if (phoneNumber.length() == 0)
{
Toast.makeText(this, "No phone number found for contact.",
Toast.LENGTH_LONG).show();
}
}
}
else
{
Log.w(DEBUG_TAG, "Warning: activity result not ok");
}
/*********/
switch (requestCode)
{
case CONTACT_PICKER_RESULT1:
phNumb1.setText(selectedNumber);
phName1.setText(selectedName);
name1 = selectedName;
phone1 = selectedNumber;
SharedPreferences sharedPref = getSharedPreferences("com.pick.contact",MODE_PRIVATE);
SharedPreferences.Editor prefEditor = sharedPref.edit();
prefEditor.putString("pNumber1",selectedNumber);
prefEditor.commit();
System.err.println("Chp1, phoneNumber = "+phoneNumber+" phoneName = "+phoneName);
break;
case CONTACT_PICKER_RESULT2:
phNumb2.setText(selectedNumber);
phName2.setText(selectedName);
name2 = selectedName;
phone2 = selectedNumber;
sharedPref = getSharedPreferences("com.pick.contact",MODE_PRIVATE);
prefEditor = sharedPref.edit();
prefEditor.putString("pNumber1",selectedNumber);
prefEditor.commit();
System.err.println("Chp2, phoneNumber = "+phoneNumber+" phoneName = "+phoneName);
break;
case CONTACT_PICKER_RESULT3:
phNumb3.setText(selectedNumber);
phName3.setText(selectedName);
name3 = selectedName;
phone3 = selectedNumber;
sharedPref = getSharedPreferences("com.pick.contact",MODE_PRIVATE);
prefEditor = sharedPref.edit();
prefEditor.putString("pNumber1",selectedNumber);
prefEditor.commit();
System.err.println("Chp3, phoneNumber = "+phoneNumber+" phoneName = "+phoneName);
break;
case CONTACT_PICKER_RESULT4:
phNumb4.setText(selectedNumber);
phName4.setText(selectedName);
name4 = selectedName;
phone4 = selectedNumber;
sharedPref = getSharedPreferences("com.pick.contact",MODE_PRIVATE);
prefEditor = sharedPref.edit();
prefEditor.putString("pNumber1",selectedNumber);
prefEditor.commit();
System.err.println("Chp4, phoneNumber = "+phoneNumber+" phoneName = "+phoneName);
break;
case CONTACT_PICKER_RESULT5:
phNumb5.setText(selectedNumber);
phName5.setText(selectedName);
name5 = selectedName;
phone5 = selectedNumber;
sharedPref = getSharedPreferences("com.pick.contact",MODE_PRIVATE);
prefEditor = sharedPref.edit();
prefEditor.putString("pNumber1",selectedNumber);
prefEditor.commit();
System.err.println("Chp5, phoneNumber = "+phoneNumber+" phoneName = "+phoneName);
break;
}
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
super.onPause();
SharedPreferences sharedPref = getSharedPreferences("speed_dial_setup",MODE_PRIVATE);
SharedPreferences.Editor prefEditor = sharedPref.edit();
prefEditor.putString("pNumber1","phone_number");
prefEditor.commit();
}
@Override
protected void onStop() {
// TODO Auto-generated method stub
// super.onStop();
super.onPause();
SharedPreferences sharedPref = getSharedPreferences("speed_dial_setup",MODE_PRIVATE);
SharedPreferences.Editor prefEditor = sharedPref.edit();
prefEditor.putString("pNumber1","phone_number");
prefEditor.commit();
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
SharedPreferences sharedPref = getSharedPreferences("speed_dial_setup",MODE_PRIVATE);
SharedPreferences.Editor prefEditor = sharedPref.edit();
prefEditor.putString("pNumber1","phone_number");
prefEditor.commit();
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
//super.onDestroy();
super.onPause();
SharedPreferences sharedPref = getSharedPreferences("speed_dial_setup",MODE_PRIVATE);
SharedPreferences.Editor prefEditor = sharedPref.edit();
prefEditor.putString("pNumber1","phone_number");
prefEditor.commit();
}
}
当后退按钮被按下时,它完成的活动。所以我建议将您需要的数据保存到sharedpreference中。并且,当应用程序被重新打开时负载从共享偏好的信息
编辑:
下面是使用SharedPreference
public class Calc extends Activity {
public static final String PREFS_NAME = "MyPrefsFile";
@Override
protected void onCreate(Bundle state){
super.onCreate(state);
. . .
// Restore preferences
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
String My_String = settings.getString("item", "No item availible");
int my_int = settings.getInt("integerItem", 0);
}
@Override
protected void onStop(){
super.onStop();
// We need an Editor object to make preference changes.
// All objects are from android.context.Context
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putString("item", My_item); // the first parameter is the Key, and the second being the variable
editor.putInt("integerItem" item_number);
// Commit the edits!
editor.commit();
}
}
你有什么问题?这有点它是如何工作的。如果它仍然在后台打开,它仍然是开放的。但是如果你按回来,它就完成了。有点像finish()
被调用。
保存您需要保存在onPause()
,onStop()
或onDestroy()
函数中的任何状态。
这段代码不是这样做的吗? SharedPreferences sharedPref = getSharedPreferences(“speed_dial_setup”,MODE_PRIVATE); SharedPreferences.Editor prefEditor = sharedPref.edit(); prefEditor.putString( “pNumber1”, “PHONE_NUMBER”); prefEditor.commit(); – David 2012-01-16 23:07:43
什么是在logcat中的eror的例子? – 2012-01-16 21:39:57