Java Android活动迫使Android 4.1关闭
这是我主要活动的来源,我曾尝试在Android 2.3.7和Android 4.1及以上版本中启动它,它在Android 2.3.7中成功运行,但在Android 4.1中崩溃Java Android活动迫使Android 4.1关闭,java,android,android-activity,Java,Android,Android Activity,这是我主要活动的来源,我曾尝试在Android 2.3.7和Android 4.1及以上版本中启动它,它在Android 2.3.7中成功运行,但在Android 4.1中崩溃 public class CalculatorActivity extends Activity implements LocationListener { protected static final String TAG = "123"; public static Handler h; @Override
public class CalculatorActivity extends Activity implements LocationListener
{
protected static final String TAG = "123";
public static Handler h;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_calculator);
(LocationManager)getSystemService(Context.LOCATION_SERVICE);
final SharedPreferences unitpreference = PreferenceManager.getDefaultSharedPreferences(this);
final String unitstring = unitpreference.getString("unit_type", "");
final int unit = Integer.parseInt(unitstring);
changecityname();
changeusername();
if (unit==1)
{
TextView kms1 = (TextView) findViewById(R.id.textView7);
kms1.setText("kms.");
TextView kml = (TextView) findViewById(R.id.textView8);
kml.setText("km/lt");
TextView kms2 = (TextView) findViewById(R.id.textView9);
kms2.setText("kms.");
TextView rs = (TextView) findViewById(R.id.textView10);
rs.setText("Rs.");
}
else
{
TextView kms1 = (TextView) findViewById(R.id.textView7);
kms1.setText("mi.");
TextView kml = (TextView) findViewById(R.id.textView8);
kml.setText("mi/ga");
TextView kms2 = (TextView) findViewById(R.id.textView9);
kms2.setText("mi.");
TextView rs = (TextView) findViewById(R.id.textView10);
rs.setText("$");
}
clickbutton();
};
private void changeusername()
{
final SharedPreferences currentusername = getSharedPreferences("PREFS_NAME",0);
final String loggedInUser = currentusername.getString("username", "");
TextView loggedInUsername = (TextView) findViewById(R.id.textView11);
loggedInUsername.setText("Logged in as "+loggedInUser);
}
private void changecityname()
{
final SharedPreferences citypreference = PreferenceManager.getDefaultSharedPreferences(this);
final String citystring = citypreference.getString("example_list", "");
int city = Integer.parseInt(citystring);
TextView cityname = (TextView) findViewById(R.id.textView12);
if (city==1)
{
cityname.setText("Panchkula ");
}
else if (city==2)
{
cityname.setText("Chandigarh ");
}
else if (city==3)
{
cityname.setText("Mohali ");
}
else
{
cityname.setText("Your City ");
}
}
@Override
public void onResume() {
super.onResume();
final SharedPreferences unitpreference = PreferenceManager.getDefaultSharedPreferences(this);
final String unitstring = unitpreference.getString("unit_type", "");
final int unit = Integer.parseInt(unitstring);
final SharedPreferences citypreference = PreferenceManager.getDefaultSharedPreferences(this);
final String citystring = citypreference.getString("example_list", "");
int city = Integer.parseInt(citystring);
final SharedPreferences fuelpreference = PreferenceManager.getDefaultSharedPreferences(this);
final String fuelstring = fuelpreference.getString("fuel_type", "");
int fuel = Integer.parseInt(fuelstring);
if (unit==1)
{
TextView kms1 = (TextView) findViewById(R.id.textView7);
kms1.setText("kms.");
TextView kml = (TextView) findViewById(R.id.textView8);
kml.setText("km/lt");
TextView kms2 = (TextView) findViewById(R.id.textView9);
kms2.setText("kms.");
TextView rs = (TextView) findViewById(R.id.textView10);
rs.setText("Rs.");
}
else
{
TextView kms1 = (TextView) findViewById(R.id.textView7);
kms1.setText("mi.");
TextView kml = (TextView) findViewById(R.id.textView8);
kml.setText("mi/ga");
TextView kms2 = (TextView) findViewById(R.id.textView9);
kms2.setText("mi.");
TextView rs = (TextView) findViewById(R.id.textView10);
rs.setText("$");
}
clickbutton();
changecityname();
changeusername();
h = new Handler()
{
public void handleMessage(Message msg)
{
super.handleMessage(msg);
switch (msg.what)
{
case 0:
finish();
break;
}
}
};
}
@Override
protected void onPause() {
super.onPause();
final SharedPreferences unitpreference = getSharedPreferences("unit_type",MODE_PRIVATE);
SharedPreferences.Editor uniteditor = unitpreference.edit();
uniteditor.commit();
}
public void clickbutton()
{
final SharedPreferences unitpreference = PreferenceManager.getDefaultSharedPreferences(this);
final String unitstring = unitpreference.getString("unit_type", "");
final int unit = Integer.parseInt(unitstring);
final SharedPreferences citypreference = PreferenceManager.getDefaultSharedPreferences(this);
final String citystring = citypreference.getString("example_list", "");
int city = Integer.parseInt(citystring);
final SharedPreferences fuelpreference = PreferenceManager.getDefaultSharedPreferences(this);
final String fuelstring = fuelpreference.getString("fuel_type", "");
int fuel = Integer.parseInt(fuelstring);
SharedPreferences petrolPricesetting = getSharedPreferences("PREFS_NAME", 0);
SharedPreferences dieselPricesetting = getSharedPreferences("PREFS_NAME", 0);
float citypetrolprice =petrolPricesetting.getFloat("petrolprice", 70.0f);
float citydieselprice =dieselPricesetting.getFloat("dieselprice", 60.0f);
final double price;
if (fuel==1)
{
if (city==1)
{
price=69.19;
}
else if (city==2)
{
price=69.59;
}
else if (city==3)
{
price=76.18;
}
else
{
price=citypetrolprice;
}
}
else
{
if (city==1)
{
price=47.24;
}
else if (city==2)
{
price=49.42;
}
else if (city==3)
{
price=47.56;
}
else
{
price=citydieselprice;
}
}
Button livecost = (Button) findViewById(R.id.button3);
livecost.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View arg0)
{
Intent startlive = new Intent(CalculatorActivity.this,Live.class);
CalculatorActivity.this.startActivity(startlive);
}
});
Button calculatemileage = (Button) findViewById(R.id.button1);
calculatemileage.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View arg0)
{
EditText distancetravelled= (EditText) findViewById(R.id.editText1);
EditText refillingcost= (EditText) findViewById(R.id.editText2);
if (distancetravelled.length()==0 || refillingcost.length()==0 )
{
Log.v(TAG, "Setting has been changed!");
Toast.makeText(getApplicationContext(), "Please fill both the distance travelled and the cost!", Toast.LENGTH_SHORT).show();
}
else
{
String stringdistancetravelled=distancetravelled.getText().toString();
String stringrefillingcost=refillingcost.getText().toString();
Log.v(TAG, "Setting has been changed!");
float floatdistancetravelled =Float.valueOf(stringdistancetravelled);
float floatrefillingcost =Float.valueOf(stringrefillingcost);
double mileageanswer = (floatdistancetravelled/floatrefillingcost)*price;
final float floatmileageanswer = (float) mileageanswer;
double mileageanswerroundoff = Math.round(floatmileageanswer*100.0)/100.0;
double mileageanswerimperial = mileageanswer*0.621371192;
final float floatmileageanswerimperial = (float) mileageanswerimperial;
double mileageanswerimperialroundoff = Math.round(floatmileageanswerimperial*100.0)/100.0;
if (unit==1)
{
Toast.makeText(getApplicationContext(), mileageanswerroundoff+" km/l", Toast.LENGTH_LONG).show();
}
else
{
Toast.makeText(getApplicationContext(), mileageanswerimperialroundoff+" mi/ga", Toast.LENGTH_LONG).show();
}
}
}});
Button calculatecost= (Button) findViewById(R.id.button2);
calculatecost.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View arg0)
{
EditText mileage= (EditText) findViewById(R.id.editText3);
EditText distance= (EditText) findViewById(R.id.editText4);
if (mileage.getText().length()==0 || distance.getText().length()==0 )
{
Toast.makeText(getApplicationContext(), "Please fill both the distance to travel and the mileage!", Toast.LENGTH_SHORT).show();
}
else
{
String stringmileage=mileage.getText().toString();
String stringdistance=distance.getText().toString();
float floatmileage =Float.valueOf(stringmileage);
float floatdistance =Float.valueOf(stringdistance);
double costanswer = (floatdistance)*(price/floatmileage);
final float floatcostanswer = (float) costanswer;
double costanswerroundoff = Math.round(floatcostanswer*100.0)/100.0;
double costanswerimperial = costanswer*0.621371192*0.01661;
final float floatcostanswerimperial = (float) costanswerimperial;
double costanswerimperialroundoff = Math.round(floatcostanswerimperial*100.0)/100.0;
if (unit==1)
{
Toast.makeText(getApplicationContext(), "Rs."+costanswerroundoff, Toast.LENGTH_LONG).show();
}
else
{
Toast.makeText(getApplicationContext(), "$"+costanswerimperialroundoff, Toast.LENGTH_LONG).show();
}
}
}});
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
getMenuInflater().inflate(R.menu.activity_calculator, menu);
return true;
}
public boolean onMenuItemSelected(int featureId, MenuItem item)
{
if (item.getItemId()==R.id.menu_settings)
{
Intent startsettings = new Intent(CalculatorActivity.this,SettingsActivity.class);
CalculatorActivity.this.startActivity(startsettings);
}
else
{
Intent startlogin = new Intent(CalculatorActivity.this,Login.class);
CalculatorActivity.this.startActivity(startlogin);
CheckBox keeplog = (CheckBox) findViewById(R.id.checkBox1);
boolean isChecked = false;
SharedPreferences settings = getSharedPreferences("PREFS_NAME", 0);
SharedPreferences.Editor editor = settings.edit();
editor.putBoolean("isChecked", isChecked);
editor.commit();
finish();
}
return true;
}
@Override
public void onLocationChanged(Location location)
{
}
@Override
public void onProviderDisabled(String arg0)
{
}
@Override
public void onProviderEnabled(String arg0)
{
}
@Override
public void onStatusChanged(String arg0, int arg1, Bundle arg2)
{
}
}
布局文件:
我认为错误是无效的Int:“”。原因可能是什么?您的
unitstring
必须是空字符串。请检查一下
final String unitstring = unitpreference.getString("unit_type", "");
final int unit = Integer.parseInt(unitstring);
您至少应该捕获
NumberFormatException
。您的unitstring
必须是空字符串。请检查一下
final String unitstring = unitpreference.getString("unit_type", "");
final int unit = Integer.parseInt(unitstring);
final String unitstring = unitpreference.getString("unit_type", "");
final int unit = Integer.parseInt(unitstring);
您至少应该捕获NumberFormatException
final String unitstring = unitpreference.getString("unit_type", "");
final int unit = Integer.parseInt(unitstring);
每个安卓版本都会失败
尝试:
注意:更好的方法是将“unit_type”存储为int,而不是字符串
final String unitstring = unitpreference.getString("unit_type", "");
final int unit = Integer.parseInt(unitstring);
每个安卓版本都会失败
尝试:
注意:更好的方法是将“unit_type”存储为int,而不是字符串
final String unitstring = unitpreference.getString("unit_type", "");
final int unit = Integer.parseInt(unitstring);
在初始点,它在unitstring中获得“”。
所以它不能用整数来解析。
因此,您的首选项可能为空
尝试使用:
final String unitstring = unitpreference.getString("unit_type", "1");
final int unit = Integer.parseInt(unitstring);
所以unitstring的默认值将是“1”
在首选项中,同时获得一些值。始终在“keyvalue(此处“1”为默认值)”中输入一些默认值。因此,每当您的“键首选项(此处为“unit_type”)为null或“”或未定义时。然后它将给出“keyvalue”,这是该键的默认值
在初始点,它在unitstring中获得“”。
所以它不能用整数来解析。
因此,您的首选项可能为空
尝试使用:
final String unitstring = unitpreference.getString("unit_type", "1");
final int unit = Integer.parseInt(unitstring);
所以unitstring的默认值将是“1”
在首选项中,同时获得一些值。始终在“keyvalue(此处“1”为默认值)”中输入一些默认值。因此,每当您的“键首选项(此处为“unit_type”)为null或“”或未定义时。然后它将给出“keyvalue”,这是该键的默认值