Putextra继续发送第一个输入的数据

时间:2018-05-02 14:27:27

标签: java android android-intent

这是用于将数据发送到Main活动的函数。

public void sendData(){
        String name = Bookname.getText().toString();
        String  number = Integer.parseInt(Bookpage.getText().toString());
        String description = Booknote.getText().toString();
        Intent back = new Intent(getApplicationContext(),MainActivity.class);
        back.putExtra("Bookname",name);
        back.putExtra("Booknote",description);
        back.putExtra("number",number);
        setResult(RESULT_OK, back);
        finish();
    }

这是我使用该功能的地方。

 @Override
    public boolean  onOptionsItemSelected(MenuItem item) {
        if(item.getItemId() == R.id.Color_picker){
            Toast.makeText(this, "ColoRS", Toast.LENGTH_SHORT).show();
        }
        if(item.getItemId() == R.id.Check_icon){
            sendData();
        }
        return true;
    }

}

这就是我在主要活动中获取字符串的方式

 @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == 1 && resultCode == RESULT_OK) {
            Ref c1 = new Ref(data.getStringExtra("Bookname"), data.getStringExtra("Booknote"),data.getIntExtra("number",0),data.getIntExtra("color", Color.RED));
            adapter.add(c1);

        }
    }

我的问题是数据只写一次,当函数发送不同数据时,它会发送与第一次输入数据相同的数据。

1 个答案:

答案 0 :(得分:0)

如果您将activityOnResult发送为REQUEST_CODE,则adapter.notifyDataSetChanged()即可

我猜您遇到的唯一问题(我没有更多信息)是因为我看到并且适配器,我想您应该致电intent以查看您的"列表中的更改" ?

你也可以"清除" onActivityResult(),为了避免重复的内容,每次转到getIntent().removeExtra("key");,您都可以执行此操作fread以确保下次有不同的数据。

如果你这样做,你必须做其他逻辑好处才能使用它......