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”