这是用于将数据发送到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);
}
}
我的问题是数据只写一次,当函数发送不同数据时,它会发送与第一次输入数据相同的数据。
答案 0 :(得分:0)
如果您将activityOnResult
发送为REQUEST_CODE
,则adapter.notifyDataSetChanged()
即可
我猜您遇到的唯一问题(我没有更多信息)是因为我看到并且适配器,我想您应该致电intent
以查看您的"列表中的更改" ?
你也可以"清除" onActivityResult()
,为了避免重复的内容,每次转到getIntent().removeExtra("key");
,您都可以执行此操作fread
以确保下次有不同的数据。
如果你这样做,你必须做其他逻辑好处才能使用它......