簡體   English   中英

.putExtra意向后應用崩潰

[英]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);                
      }
}

注:為清楚起見,使用適當的命名約定,如textViewVarTextView ,而不是btn和轉換您的inttext使用""+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.

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