Android intent getStringExtra返回null

时间:2016-02-02 20:48:46

标签: android android-intent bundle getstring

我尝试将数据添加到回收器视图适配器,但getStringExtra始终为null。我可能在我正在做的事情上犯了一个至关重要的缺陷,因为我不是最有经验的程序员。

首先叫什么:

public void addItem(View view) {
        Intent otherOne = new Intent(this, Main2Activity.class);
        startActivity(otherOne);

        Intent intent = getIntent();
        String subjectString = intent.getStringExtra("subject");
        String detailsString = intent.getStringExtra("details");
        String dateString =   intent.getStringExtra("date");



        Data dataToAdd = new Data(
                subjectString,
                detailsString,
                dateString);
        mData.add(dataToAdd);
        Log.d(TAG, dateString + "might have workedlol");
        // Update adapter.
        mAdapter.addItem(mData.size()-1, dataToAdd);
    }

在MainActivity2中调用的内容:

public void setData(View view){


        inputSubject = (EditText) (findViewById(R.id.editTextSubject));
        String stringSubject = inputSubject.getText().toString();

        inputDetails = (EditText) findViewById(R.id.editTextDetails);
        String stringDetails = inputDetails.getText().toString();

        inputDate = (EditText) findViewById(R.id.editTextDate);
        String stringDate = inputDate.getText().toString();

        Intent intent = new Intent(this, PlannerActivity.class);
        intent.putExtra("subject", stringSubject.toString());
        Log.d(TAG, stringDate + "might have worked");
        intent.putExtra("details", stringDetails.toString());
        intent.putExtra("subject", stringDate.toString());
        startActivity(intent);
    }

1 个答案:

答案 0 :(得分:2)

您有两个错误:

  1. 您错误地尝试处理从活动返回的数据。有几个关于如何执行此操作的教程。您需要使用startActivityForResult()并覆盖onActivityResult()回调。有关详细信息,请参阅Getting a Result from an Activity

  2. 您要设置"subject"两次,一次使用stringSubject,然后再次设置stringDate

  3. 顺便说一句,"字符串"在您的变量名称中是多余的和不必要的输入。我建议您使用更简单的名称,例如datesubject。此外,没有理由在toString()对象上调用String,因为它已经是正确的类型。