应用程序崩溃后.putExtra意图
我试图发送一个变量从一个活动到另一个。当我尝试在手机上测试应用程序时,它崩溃并且表示应用程序已停止工作。从接收侧应用程序崩溃后.putExtra意图
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);
}}
发送方
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);
}
和代码
代码如果你知道是什么问题,请让我知道。我花了数小时寻找解决方案。谢谢
你需要移动这个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
使用
由于intValue可能没有资源,因此该应用可能会在'btn.setText(intValue)'时崩溃。更改为'btn.setText(String.valueOf(intValue)'。 –
@PavanPatil我忽略了那部分,谢谢 –
@PavanPatil实际上总是会有'0'(默认值)或传入的值,尽管它们应该是形式的字符串 –
在你的活动
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);
}
和Recieving活动 把这个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(intValue);
:值为5的字符串资源ID不存在。尝试将其替换为btn.setText(Integer.toString(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);
}
}
日志猫更换你的代码总是乐于助人 – 2016-12-29 05:30:00
@DroidGalaxy,请复制粘贴崩溃的错误日志。 –