我只有2个活动,分别是Main和Second活动,但是sharedpreference在2个活动之间起作用,但是当我重新启动它时,它永远不会进入if语句(Main活动)if(prefs!= null),这意味着当我重新启动它时,prefs始终为null 。关闭应用程序时,sharedpreference是否实际保存数据?提前谢谢:)
MainActivity
package com.example.hongsukchoi.rentaltruck;
import android.content.Intent;
import android.provider.MediaStore;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.content.SharedPreferences;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Set;
public class MainActivity extends AppCompatActivity {
private EditText mile_edittext;
private RadioGroup radio;
private Button submit_button;
double truck_price;
double mile_price;
double total_price;
private int truck_type;
private RadioButton ten;
private RadioButton seventeen;
private RadioButton twentysix;
SharedPreferences prefs;
SharedPreferences.Editor editor;
Set<String> mySet = new HashSet<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
ten = (RadioButton) findViewById(R.id.tenfeettruck);
seventeen = (RadioButton) findViewById(R.id.seventeenfeettruck);
twentysix = (RadioButton) findViewById(R.id.twentysixfeettruck);
//ten.setChecked(true);
if(prefs != null) {
System.out.println("This is what I am looking for " + prefs.getAll());
//R.id.checked
ten.setChecked(true);
}
System.out.println("Application is now started");
//ArrayList<String> allPrefs = new ArrayList(prefs.getStringSet("total_set", null));
// System.out.println("HERE ARE ALL THE PREFERENCES(Main acivity): " + allPrefs.toString());
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
prefs = getSharedPreferences("type", MODE_PRIVATE);
editor = prefs.edit();
radio = (RadioGroup) findViewById(R.id.truckRadio);
submit_button = (Button) findViewById(R.id.submit_button);
mile_edittext = (EditText) findViewById(R.id.mile_edittext);
submit_button.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
String temp3 = mile_edittext.getText().toString();
mile_price = Double.parseDouble(temp3);
total_price = truck_price + (mile_price*2);
String total2 = String.valueOf(total_price);
//editor.putString("total", total2);
//editor.putStringSet("total_set", mySet);
editor.putInt("type", truck_type);
editor.commit();
Intent i = new Intent(MainActivity.this, SecondActivity.class);
i.putExtra("total",total2);
//i.putExtra("type", truck_type);
startActivity(i);
}
});
}
public void onRadioButtonClicked(View view) {
// Is the button now checked?
boolean checked = ((RadioButton) view).isChecked();
// Check which radio button was clicked
switch(view.getId()) {
case R.id.tenfeettruck:
if (checked)
truck_price = 19.99;
truck_type = 10;
mySet.add(String.valueOf(truck_type));
break;
case R.id.seventeenfeettruck:
if (checked)
truck_price = 29.99;
truck_type = 17;
mySet.add(String.valueOf(truck_type));
break;
case R.id.twentysixfeettruck:
if (checked)
truck_price = 39.99;
truck_type = 26;
mySet.add(String.valueOf(truck_type));
break;
}
}
}
SecondActivity
package com.example.hongsukchoi.rentaltruck;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.widget.ImageView;
import android.widget.TextView;
import org.w3c.dom.Text;
import java.util.ArrayList;
public class SecondActivity extends Activity {
private double total_price;
private ImageView myImgView;
private TextView Total_displaying;
private TextView whichtruck;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
myImgView = (ImageView)findViewById(R.id.truckimage);
whichtruck = (TextView)findViewById(R.id.whichtruck);
SharedPreferences prefs = getSharedPreferences("type", MODE_PRIVATE);
SharedPreferences prefs_set = getSharedPreferences("total_set", MODE_PRIVATE);
if(prefs.getStringSet("total_set", null) != null) {
ArrayList<String> allPrefs = new ArrayList(prefs.getStringSet("total_set", null));
System.out.println("HERE ARE ALL THE PREFERENCES(Second acivity): " + allPrefs.toString());
}
//SharedPreferences type = getSharedPreferences("type", MODE_PRIVATE);
Intent i = getIntent();
String temp = i.getExtras().getString("total");
int type_temp = prefs.getInt("type", 0);
if(temp != null) {
total_price = Double.parseDouble(temp);
}
if(type_temp == 10)
{
myImgView.setImageDrawable(getResources().getDrawable(R.drawable.truckten));
whichtruck.setText("is 10 feet truck!");
}
else if(type_temp == 17)
{
myImgView.setImageDrawable(getResources().getDrawable(R.drawable.truckseventeen));
whichtruck.setText("is 17 feet truck!");
}
else if(type_temp == 26)
{
myImgView.setImageDrawable(getResources().getDrawable(R.drawable.trucktwentysix));
whichtruck.setText("is 26 feet truck!");
}
Total_displaying = (TextView) findViewById(R.id.Total_displaying);
String display = Double.toString(total_price);
Total_displaying.setText(display);
}
}
当应用程序关闭时,sharedpreference会保存数据。
您正在检查“ prefs”是否不为空,然后再启动它。
请尝试下面的代码,并检查是否可以解决您的问题:
里面的onCreate:
prefs = getSharedPreferences("type", MODE_PRIVATE);
内部onStart:
if(prefs != null) {
System.out.println("This is what I am looking for " + prefs.getAll());
//R.id.checked
ten.setChecked(true);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句