![](/img/trans.png)
[英]How do I pass a Linked List of custom objects between activities in an android application?
[英]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
第一次使用equals
不equals
比較字符串!=
第二:不要發送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"));
因為您已經通過key
: SkillsScore
從Intent傳遞了value
,並且正在使用key
: SkillScore
獲得了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.