![](/img/trans.png)
[英]App crashes after deletion due to Intent.PutExtra sending firebase node to another activity for editing
[英]App crashes after .putExtra intent
我正在嘗試將變量從一個活動發送到另一個活動。 當我嘗試在手機上測試該應用程序時,它崩潰並表示該應用程序已停止運行。
來自發送方的代碼
if (id==R.id.action_cart){
Intent good1 = new Intent(MainActivity.this, Scroll.class);
good1.putExtra("intVariableName", 5);
startActivity(good1);
TextView hides = (TextView) findViewById(R.id.textView3);
hides.setVisibility(View.INVISIBLE);
}
和接收方的代碼
public class Scroll extends AppCompatActivity {
TextView btn = (TextView) findViewById(R.id.text);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_scroll);
Intent mIntent = getIntent();
int intValue = mIntent.getIntExtra("intVariableName", 0);
btn.setText(intValue);
}}
如果您知道問題所在,請告訴我。 我已經花了幾個小時尋找解決方案。 謝謝
您需要移動此TextView btn = (TextView) findViewById(R.id.text);
在oncreate
因為在oncreate
之前沒有附加到Scroll
活動的布局,並且使用此findViewById(R.id.text)
查找textview
將導致失敗,從而導致崩潰
public class Scroll extends AppCompatActivity {
TextView btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_scroll);
btn = (TextView) findViewById(R.id.text)
//^^^^
Intent mIntent = getIntent();
int intValue = mIntent.getIntExtra("intVariableName", 0);
btn.setText(""+intValue);
}
}
注:為清楚起見,使用適當的命名約定,如textViewVar
為TextView
,而不是btn
和轉換您的int
值text
使用""+value
,因為TextView
只允許String
使用
我認為問題出在此調用中: btn.setText(intValue);
:值5的字符串資源ID不存在。 嘗試將其替換為btn.setText(Integer.toString(intValue));
在您的活動中
public class Scroll extends AppCompatActivity {
TextView btn ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_scroll);
btn = (TextView) findViewById(R.id.text); // initialize your button here
Intent mIntent = getIntent();
int intValue = mIntent.getIntExtra("intVariableName", 0);
btn.setText(String.valueOf(intValue));
}}
嘗試這個
if (id==R.id.action_cart){
//hide views before moving
TextView hides = (TextView) findViewById(R.id.textView3);
hides.setVisibility(View.INVISIBLE);
Intent good1 = new Intent(MainActivity.this, Scroll.class);
good1.putExtra("intVariableName", 5);
startActivity(good1);
}
並在接收活動中將其放在oncreate上
btn = (TextView) findViewById(R.id.text);
像這樣
public class Scroll extends AppCompatActivity {
TextView btn ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_scroll);
btn = (TextView) findViewById(R.id.text);
Intent mIntent = getIntent();
int intValue = mIntent.getIntExtra("intVariableName", 0);
btn.setText(intValue);
}}
將行更改為: btn.setText(String.valueOf(intValue));
public class Scroll extends AppCompatActivity {
TextView btn = (TextView) findViewById(R.id.text);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_scroll);
Intent mIntent = getIntent();
int intValue = mIntent.getIntExtra("intVariableName", 0);
btn.setText(String.valueOf(intValue));
}}
以此替換您的代碼
public class Scroll extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_scroll);
TextView btn = (TextView) findViewById(R.id.text);
Intent mIntent = getIntent();
int intValue = mIntent.getIntExtra("intVariableName", 0);
btn.setText(intValue);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.