簡體   English   中英

如何修復此代碼以在Android應用程序的活動之間傳遞數據?

[英]How do I fix this code to pass data between activities in Android Application?

我在一個活動(OHNSCalculatorSkillsCourses)中設置了一個計算器,該計算器可以進行簡單的計算並給出結果。

我希望結果顯示在另一個活動(OHNSCalculator)中。

我已經更新了以下兩個活動代碼。

OHNSCalculatorSkills課程:

public class OHNSCalculatorSkillsCourses extends Activity{

EditText editText3SC;
TextView textViewResultSC;


@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.ohns_calculator_skillscourses);

    editText3SC = (EditText) findViewById(R.id.editText3SC);
    textViewResultSC = (TextView) findViewById(R.id.textViewResultSC);

    final SharedPreferences prefs = PreferenceManager
            .getDefaultSharedPreferences(this);

    editText3SC.setText(prefs.getString("autoSave4", ""));

    String result= prefs.getString("autoSave4","");
    if(!result.equals("") && !result.isEmpty()){
        textViewResultSC.setText(addNumbers());
        prefs.getString("autoSave4","");
    }
    editText3SC.addTextChangedListener(new TextWatcher() {

        public void beforeTextChanged(CharSequence s, int start, int count,
                                      int after) {
            // TODO Auto-generated method stub
        }

        public void onTextChanged(CharSequence s, int start, int before,
                                  int count) {
            textViewResultSC.setText(addNumbers());
        }


        public void afterTextChanged(Editable s)
        {
            prefs.edit().putString("autoSave4", s.toString()).commit();
        }


    });

}

public void showGreetings(View view)
{
    String button_text;
    button_text = ((Button) view).getText().toString();
    if (button_text.equals("Back"))
    {
        Intent intent = new Intent(this,OHNSCalculator.class);
        startActivity(intent);

        Intent getScore = new Intent(OHNSCalculatorSkillsCourses.this, OHNSCalculator.class);
        getScore.putExtra("SkillsScore", textViewResultSC.getText().toString());
        startActivity(getScore);

    }}

private String addNumbers() {
    float number1;
    if (!editText3SC.getText().toString().isEmpty() && editText3SC.getText().length() > 0) {
        number1 = Float.parseFloat(editText3SC.getText().toString());
    } else {
        number1 = 0;
    }
    float sum = (float) (number1 * 0.5);
    if (sum > 1) sum = 1;
    return sum + "";
}}

OHNSCalculator:

public class OHNSCalculator extends Activity {

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
    setContentView(R.layout.ohns_calculator);
    Intent mgetScore = getIntent();
    float textViewResultSC = Float.parseFloat(mgetScore.getStringExtra("SkillScore"));

}

public void showGreetings(View view)
{
    String button_text;
    button_text = ((Button) view).getText().toString();
    if (button_text.equals("Surgical Experience (Max 6)"))
    {
    Intent intent = new Intent(this,OHNSCalculatorSurgicalExperience.class);
        startActivity(intent);
    }
    else if (button_text.equals("Skills Courses (Max 1)"))
    {
    Intent intent = new Intent(this,OHNSCalculatorSkillsCourses.class);
        startActivity(intent);
    }
    else if (button_text.equals("Qualifications (Max 5)"))
    {
        Intent intent = new Intent(this,OHNSCalculatorQualifications.class);
        startActivity(intent);
    }
    else if (button_text.equals("Presentations (Max 3)"))
    {
        Intent intent = new Intent(this,OHNSCalculatorPresentations.class);
        startActivity(intent);
    }
    else if (button_text.equals("Publications (Max 5)"))
    {
        Intent intent = new Intent(this,OHNSCalculatorPublications.class);
        startActivity(intent);
    }

}}

我仍然收到此錯誤

Logcat

在此處輸入圖片說明

第一次使用equalsequals比較字符串!=

第二:不要發送TextView引用,而是發送值

getScore.putExtra("SkillsScore",textViewResultSC.getText().toString());

第三:在擁有數據之后執行將值放入intent對象和startActvity的行

第四:使用解析將字符串轉換為浮點數

在獲取值而不是Activity onCreate()后,必須通過Intent

你必須改變你的

Intent getScore = new Intent(SkillsCourses.this, Calculatorresult.class);
getScore.putExtra("SkillsScore",  textViewResultSC.getText().toString());
startActivity(getScore);

您可以通過在Calculatorresult.class OnCreate()中使用以下代碼來獲得結果

Intent mgetScore = getIntent();
String textViewResultSC = mgetScore.getStringExtra("SkillsScore");

要么

注意:如果要對textViewResultSC進行float運算,則可以使用以下代碼:

Intent mgetScore = getIntent();
float textViewResultSC = Float.parseFloat(mgetScore.getStringExtra("SkillsScore"));

編輯

你的課必須是

public class Calculatorresult extends Activity {

  @Override
  protected void onCreate(@Nullable Bundle savedInstanceState) {


 super.onCreate(savedInstanceState);
    setContentView(R.layout.calculatorresult);
    Intent mgetScore = getIntent();
    float textViewResultSC = Float.parseFloat(mgetScore.getStringExtra("SkillsScore"));

}

編輯2

您在float textViewResultSC = Float.parseFloat(mgetScore.getStringExtra("SkillScore"));中傳遞了錯誤的key float textViewResultSC = Float.parseFloat(mgetScore.getStringExtra("SkillScore"));

因為您已經通過keySkillsScore從Intent傳遞了value ,並且正在使用keySkillScore獲得了value SkillScore這導致NullPointerException

你需要改變這個

float textViewResultSC = Float.parseFloat(mgetScore.getStringExtra("SkillScore"));

float textViewResultSC = Float.parseFloat(mgetScore.getStringExtra("SkillsScore"));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM