2016-12-29 125 views
2

我试图发送一个变量从一个活动到另一个。当我尝试在手机上测试应用程序时,它崩溃并且表示应用程序已停止工作。从接收侧应用程序崩溃后.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); 
    } 

和代码

代码如果你知道是什么问题,请让我知道。我花了数小时寻找解决方案。谢谢

+1

日志猫更换你的代码总是乐于助人 – 2016-12-29 05:30:00

+0

@DroidGalaxy,请复制粘贴崩溃的错误日志。 –

回答

2

你需要移动这个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);     
     } 
} 

注意:使用适当的命名约定为清晰,如textViewVarTextView而不是btn并将您的int值转换为text使用""+value,因为TextView只允许String使用

+0

由于intValue可能没有资源,因此该应用可能会在'btn.setText(intValue)'时崩溃。更改为'btn.setText(String.valueOf(intValue)'。 –

+0

@PavanPatil我忽略了那部分,谢谢 –

+1

@PavanPatil实际上总是会有'0'(默认值)或传入的值,尽管它们应该是形式的字符串 –

-1

在你的活动

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)); 



}} 
-1

试试这个

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); 



    }} 
1

我认为问题出在这个调用中:btn.setText(intValue);:值为5的字符串资源ID不存在。尝试将其替换为btn.setText(Integer.toString(intValue));

-1

将行更改为: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)); 
}} 
-1

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); 

    } 
}