Android 使用包含数学公式的setText
我想将一些编辑文本设置为以下内容:Android 使用包含数学公式的setText,android,android-edittext,textview,sharedpreferences,Android,Android Edittext,Textview,Sharedpreferences,我想将一些编辑文本设置为以下内容: healthchest.setText(health * 0.35); 这在Eclipse中抛出了一个错误,我不知道为什么。我没有在Java或Android中使用数学的经验。等式中的文本视图来自另一个活动,该活动将数据存储在名为“技能和属性”的SharedReference中。方程式所涉及的活动是ArmorStatsSP 日志: 09-01 23:20:22.239: W/dalvikvm(821): threadid=1: thread exiti
healthchest.setText(health * 0.35);
这在Eclipse中抛出了一个错误,我不知道为什么。我没有在Java或Android中使用数学的经验。等式中的文本视图来自另一个活动,该活动将数据存储在名为“技能和属性”的SharedReference中。方程式所涉及的活动是ArmorStatsSP
日志:
09-01 23:20:22.239: W/dalvikvm(821): threadid=1: thread exiting with uncaught exception (group=0x41465700)
09-01 23:20:22.309: E/AndroidRuntime(821): FATAL EXCEPTION: main
09-01 23:20:22.309: E/AndroidRuntime(821): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.mikitz.rogsimple/com.mikitz.rogsimple.ArmorStatsSP}: java.lang.NullPointerException
09-01 23:20:22.309: E/AndroidRuntime(821): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)
09-01 23:20:22.309: E/AndroidRuntime(821): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
09-01 23:20:22.309: E/AndroidRuntime(821): at android.app.ActivityThread.access$600(ActivityThread.java:141)
09-01 23:20:22.309: E/AndroidRuntime(821): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
09-01 23:20:22.309: E/AndroidRuntime(821): at android.os.Handler.dispatchMessage(Handler.java:99)
09-01 23:20:22.309: E/AndroidRuntime(821): at android.os.Looper.loop(Looper.java:137)
09-01 23:20:22.309: E/AndroidRuntime(821): at android.app.ActivityThread.main(ActivityThread.java:5103)
09-01 23:20:22.309: E/AndroidRuntime(821): at java.lang.reflect.Method.invokeNative(Native Method)
09-01 23:20:22.309: E/AndroidRuntime(821): at java.lang.reflect.Method.invoke(Method.java:525)
09-01 23:20:22.309: E/AndroidRuntime(821): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
09-01 23:20:22.309: E/AndroidRuntime(821): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
09-01 23:20:22.309: E/AndroidRuntime(821): at dalvik.system.NativeStart.main(Native Method)
09-01 23:20:22.309: E/AndroidRuntime(821): Caused by: java.lang.NullPointerException
09-01 23:20:22.309: E/AndroidRuntime(821): at com.mikitz.rogsimple.ArmorStatsSP.onCreate(ArmorStatsSP.java:72)
09-01 23:20:22.309: E/AndroidRuntime(821): at android.app.Activity.performCreate(Activity.java:5133)
09-01 23:20:22.309: E/AndroidRuntime(821): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
09-01 23:20:22.309: E/AndroidRuntime(821): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
09-01 23:20:22.309: E/AndroidRuntime(821): ... 11 more
以下是SkillsAndAttributes中的代码:
package com.mikitz.rogsimple;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
public class SkillsAndAttributes extends Activity {
EditText health;
SharedPreferences pref;
String getHealth;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.skills_and_attributes);
pref = getSharedPreferences("Skills_and_Attributes", Context.MODE_PRIVATE);
health = (EditText) findViewById(R.id.health);
getHealth = pref.getString("health", "");
health.setText(getHealth);
}
public void onBackPressed()
{
SharedPreferences.Editor editor=pref.edit();
editor.putString("health", health.getText().toString());
editor.commit();
Toast.makeText(this, "GREAT SUCCESS!!!!", Toast.LENGTH_LONG).show();
Intent intent = new Intent (this, MainActivity.class);
startActivity(intent);
}
public void save (View view)
{
SharedPreferences.Editor editor=pref.edit();
editor.putString("health", health.getText().toString());
editor.commit();
Toast.makeText(this, "GREAT SUCCESS!!!!", Toast.LENGTH_LONG).show();
}
}
以下是ArmorStatsSP的代码:
package com.mikitz.rogsimple;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
import java.lang.Math;
public class ArmorStatsSP extends Activity {
EditText armorhealthchest, healthchest, abvchest;
EditText armorhealthhead, healthhead, abvhead;
EditText armorhealthrightarm, healthrightarm, abvrightarm;
EditText armorhealthleftarm, healthleftarm, abvleftarm;
EditText armorhealthrightleg, healthrightleg, abvrightleg;
EditText armorhealthleftleg, healthleftleg, abvleftleg;
EditText health;
SharedPreferences pref;
String getAHChest, getHChest, getABVChest;
String getAHHead, getHHead, getABVHead;
String getAHRightArm, getHRightArm, getABVRightArm;
String getAHLeftArm, getHLeftArm, getABVLeftArm;
String getAHRightLeg, getHRightLeg, getABVRightLeg;
String getAHLeftLeg, getHLeftLeg, getABVLeftLeg;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.armor_stats);
pref = getSharedPreferences("Armor_Stats", Context.MODE_PRIVATE);
// HEALTH
health = (EditText) findViewById(R.id.health);
// CHEST
armorhealthchest = (EditText) findViewById(R.id.armorhealthchest);
healthchest = (EditText) findViewById(R.id.healthchest);
abvchest = (EditText) findViewById(R.id.abvchest);
// HEAD
armorhealthhead = (EditText) findViewById(R.id.armorhealthhead);
healthhead = (EditText) findViewById(R.id.healthhead);
abvhead = (EditText) findViewById(R.id.abvhead);
// RIGHT ARM
armorhealthrightarm = (EditText) findViewById(R.id.armorhealthrightarm);
healthrightarm = (EditText) findViewById(R.id.healthrightarm);
abvrightarm = (EditText) findViewById(R.id.abvrightarm);
// LEFT ARM
armorhealthleftarm = (EditText) findViewById(R.id.armorhealthleftarm);
healthleftarm = (EditText) findViewById(R.id.healthleftarm);
abvleftarm = (EditText) findViewById(R.id.abvleftarm);
// RIGHT LEG
armorhealthrightleg = (EditText) findViewById(R.id.armorhealthrightleg);
healthrightleg = (EditText) findViewById(R.id.healthrightleg);
abvrightleg = (EditText) findViewById(R.id.abvrightleg);
// LEFT LEG
armorhealthleftleg = (EditText) findViewById(R.id.armorhealthleftleg);
healthleftleg = (EditText) findViewById(R.id.healthleftleg);
abvleftleg = (EditText) findViewById(R.id.abvleftleg);
// GETTING DATA FROM PREF
// CHEST
getAHChest = pref.getString("armorhealthchest", "");
getHChest = pref.getString("healthchest", "");
getABVChest = pref.getString("abvchest", "");
armorhealthchest.setText(getAHChest);
healthchest.setText(health * 0.35);
abvchest.setText(getABVChest);
// HEAD
getAHHead = pref.getString("armorhealthhead", "");
getHHead = pref.getString("healthhead", "");
getABVHead = pref.getString("abvhead", "");
armorhealthhead.setText(getAHHead);
healthhead.setText(getHHead);
abvhead.setText(getABVHead);
// RIGHT ARM
getAHRightArm = pref.getString("armorhealthrightarm", "");
getHRightArm = pref.getString("healthrightarm", "");
getABVRightArm = pref.getString("abvrightarm", "");
armorhealthrightarm.setText(getAHRightArm);
healthrightarm.setText(getHRightArm);
abvrightarm.setText(getABVRightArm);
// LEFT ARM
getAHLeftArm = pref.getString("armorhealthleftarm", "");
getHLeftArm = pref.getString("healthleftarm", "");
getABVLeftArm = pref.getString("abvleftarm", "");
armorhealthleftarm.setText(getAHLeftArm);
healthleftarm.setText(getHLeftArm);
abvleftarm.setText(getABVLeftArm);
// RIGHT LEG
getAHRightLeg = pref.getString("armorhealthrightleg", "");
getHRightLeg = pref.getString("healthrightleg", "");
getABVRightLeg = pref.getString("abvrightleg", "");
armorhealthrightleg.setText(getAHRightLeg);
healthrightleg.setText(getHRightLeg);
abvrightleg.setText(getABVRightLeg);
// LEFT LEG
getAHLeftLeg = pref.getString("armorhealthleftleg", "");
getHLeftLeg = pref.getString("healthleftleg", "");
getABVLeftLeg = pref.getString("abvleftleg", "");
armorhealthleftleg.setText(getAHLeftLeg);
healthleftleg.setText(getHLeftLeg);
abvleftleg.setText(getABVLeftLeg);
}
public void onBackPressed()
{
SharedPreferences.Editor editor=pref.edit();
// CHEST
editor.putString("armorhealthchest", armorhealthchest.getText().toString());
editor.putString("healthchest", healthchest.getText().toString());
editor.putString("abvchest", abvchest.getText().toString());
// HEAD
editor.putString("armorhealthhead", armorhealthhead.getText().toString());
editor.putString("healthhead", healthhead.getText().toString());
editor.putString("abvhead", abvhead.getText().toString());
// RIGHT ARM
editor.putString("armorhealthrightarm", armorhealthrightarm.getText().toString());
editor.putString("healthrightarm", healthrightarm.getText().toString());
editor.putString("abvrightarm", abvrightarm.getText().toString());
// LEFT ARM
editor.putString("armorhealthleftarm", armorhealthleftarm.getText().toString());
editor.putString("healthleftarm", healthleftarm.getText().toString());
editor.putString("abvleftarm", abvleftarm.getText().toString());
// RIGHT LEG
editor.putString("armorhealthrightleg", armorhealthrightleg.getText().toString());
editor.putString("healthrightleg", healthrightleg.getText().toString());
editor.putString("abvrightleg", abvrightleg.getText().toString());
// LEFT LEG
editor.putString("armorhealthleftleg", armorhealthleftleg.getText().toString());
editor.putString("healthleftleg", healthleftleg.getText().toString());
editor.putString("abvleftleg", abvleftleg.getText().toString());
editor.commit();
Toast.makeText(this, "GREAT SUCCESS!!!!", Toast.LENGTH_LONG).show();
// GETTING DATA FROM PREF
// CHEST
getAHChest = pref.getString("armorhealthchest", "");
getHChest = pref.getString("healthchest", "");
getABVChest = pref.getString("abvchest", "");
armorhealthchest.setText(getAHChest);
healthchest.setText(getHChest);
abvchest.setText(getABVChest);
// HEAD
getAHHead = pref.getString("armorhealthhead", "");
getHHead = pref.getString("healthhead", "");
getABVHead = pref.getString("abvhead", "");
armorhealthhead.setText(getAHHead);
healthhead.setText(getHHead);
abvhead.setText(getABVHead);
// RIGHT ARM
getAHRightArm = pref.getString("armorhealthrightarm", "");
getHRightArm = pref.getString("healthrightarm", "");
getABVRightArm = pref.getString("abvrightarm", "");
armorhealthrightarm.setText(getAHRightArm);
healthrightarm.setText(getHRightArm);
abvrightarm.setText(getABVRightArm);
// LEFT ARM
getAHLeftArm = pref.getString("armorhealthleftarm", "");
getHLeftArm = pref.getString("healthleftarm", "");
getABVLeftArm = pref.getString("abvleftarm", "");
armorhealthleftarm.setText(getAHLeftArm);
healthleftarm.setText(getHLeftArm);
abvleftarm.setText(getABVLeftArm);
// RIGHT LEG
getAHRightLeg = pref.getString("armorhealthrightleg", "");
getHRightLeg = pref.getString("healthrightleg", "");
getABVRightLeg = pref.getString("abvrightleg", "");
armorhealthrightleg.setText(getAHRightLeg);
healthrightleg.setText(getHRightLeg);
abvrightleg.setText(getABVRightLeg);
// LEFT LEG
getAHLeftLeg = pref.getString("armorhealthleftleg", "");
getHLeftLeg = pref.getString("healthleftleg", "");
getABVLeftLeg = pref.getString("abvleftleg", "");
armorhealthleftleg.setText(getAHLeftLeg);
healthleftleg.setText(getHLeftLeg);
abvleftleg.setText(getABVLeftLeg);
Intent intent = new Intent (this, MainActivity.class);
startActivity(intent);
}
public void save (View view)
{
SharedPreferences sharedPreferences = getSharedPreferences("Armor_Stats", Context.MODE_PRIVATE);
SharedPreferences.Editor editor=sharedPreferences.edit();
// CHEST
editor.putString("armorhealthchest", armorhealthchest.getText().toString());
editor.putString("healthchest", healthchest.getText().toString());
editor.putString("abvchest", abvchest.getText().toString());
// HEAD
editor.putString("armorhealthhead", armorhealthhead.getText().toString());
editor.putString("healthhead", healthhead.getText().toString());
editor.putString("abvhead", abvhead.getText().toString());
// RIGHT ARM
editor.putString("armorhealthrightarm", armorhealthrightarm.getText().toString());
editor.putString("healthrightarm", healthrightarm.getText().toString());
editor.putString("abvrightarm", abvrightarm.getText().toString());
// LEFT ARM
editor.putString("armorhealthleftarm", armorhealthleftarm.getText().toString());
editor.putString("healthleftarm", healthleftarm.getText().toString());
editor.putString("abvleftarm", abvleftarm.getText().toString());
// RIGHT LEG
editor.putString("armorhealthrightleg", armorhealthrightleg.getText().toString());
editor.putString("healthrightleg", healthrightleg.getText().toString());
editor.putString("abvrightleg", abvrightleg.getText().toString());
// LEFT LEG
editor.putString("armorhealthleftleg", armorhealthleftleg.getText().toString());
editor.putString("healthleftleg", healthleftleg.getText().toString());
editor.putString("abvleftleg", abvleftleg.getText().toString());
editor.commit();
Toast.makeText(this, "GREAT SUCCESS!!!!", Toast.LENGTH_LONG).show();
// CHEST
getAHChest = pref.getString("armorhealthchest", "");
getHChest = pref.getString("healthchest", "");
getABVChest = pref.getString("abvchest", "");
armorhealthchest.setText(getAHChest);
healthchest.setText(getHChest);
abvchest.setText(getABVChest);
// HEAD
getAHHead = pref.getString("armorhealthhead", "");
getHHead = pref.getString("healthhead", "");
getABVHead = pref.getString("abvhead", "");
armorhealthhead.setText(getAHHead);
healthhead.setText(getHHead);
abvhead.setText(getABVHead);
// RIGHT ARM
getAHRightArm = pref.getString("armorhealthrightarm", "");
getHRightArm = pref.getString("healthrightarm", "");
getABVRightArm = pref.getString("abvrightarm", "");
armorhealthrightarm.setText(getAHRightArm);
healthrightarm.setText(getHRightArm);
abvrightarm.setText(getABVRightArm);
// LEFT ARM
getAHLeftArm = pref.getString("armorhealthleftarm", "");
getHLeftArm = pref.getString("healthleftarm", "");
getABVLeftArm = pref.getString("abvleftarm", "");
armorhealthleftarm.setText(getAHLeftArm);
healthleftarm.setText(getHLeftArm);
abvleftarm.setText(getABVLeftArm);
// RIGHT LEG
getAHRightLeg = pref.getString("armorhealthrightleg", "");
getHRightLeg = pref.getString("healthrightleg", "");
getABVRightLeg = pref.getString("abvrightleg", "");
armorhealthrightleg.setText(getAHRightLeg);
healthrightleg.setText(getHRightLeg);
abvrightleg.setText(getABVRightLeg);
// LEFT LEG
getAHLeftLeg = pref.getString("armorhealthleftleg", "");
getHLeftLeg = pref.getString("healthleftleg", "");
getABVLeftLeg = pref.getString("abvleftleg", "");
armorhealthleftleg.setText(getAHLeftLeg);
healthleftleg.setText(getHLeftLeg);
abvleftleg.setText(getABVLeftLeg);
}
}试试这个:
try {
float healthF = Float.parseFloat( health.getText().toString() );
healthchest.setText( Float.toString(healthF * 0.35f) );
}
catch (NumberFormatException ignore) {}
第一行从health EditText读取输入并将其转换为浮点。第二行设置文本的文本。如果运行状况值无效(在这种情况下会引发NumberFormatException),则不会发生任何情况。而不是此-
healthchest.setText(health * 0.35);
试试这个-
healthchest.setText((health * 0.35) + "");
将运行状况乘以0.35时,您有一个数值,
无法使用setText()将数值设置为EditText
。因此,只需通过执行以下操作将其转换为字符串:java.lang.NullPointerException
healthchest.setText(health * 0.35);
健康是空的。尝试添加空检查
if(health != null){
//do something
}
启动ArmorStatsSP活动时应用程序崩溃。我把Logcat放在顶部的OP中。那么你的布局没有id为“health”的EditText,可能是因为
EditText health
在不同的类中吗?EditText健康状况
在skillsandtributes.class
中,但我在ArmorStatsSP.class
中调用它;在ArmorStatsSP中,所以没有。检查你的装甲统计布局。它是否有id为health的EditText?不,它没有。但如果可能的话,我需要引用特定的EditText
。你知道怎么做吗?你指的是OP中的logcat吗?那不可能。。。我在里面打了50。另外,当我把它放进去时,我不知道该放什么//做点什么
这不起作用,它会在我保存之前抛出一个错误:“运算符*对于参数类型EditText是未定义的,double”