0

我正在尝试将数据添加到回收器视图适配器,但 getStringExtra 始终为空。由于我不是最有经验的程序员,我可能在我所做的事情中犯了一个关键的缺陷。

首先被称为:

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

1 回答 1

2

你有两个错误:

  1. 您错误地尝试处理从活动返回的数据。有几个关于如何做到这一点的教程。您将需要使用startActivityForResult()并覆盖onActivityResult()回调。有关详细信息,请参阅从活动中获取结果。

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

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

于 2016-02-02T21:01:13.703 回答