首先,我已经搜索了很多其他帖子,但仍未找到解决方法。
MainActivity
包含ListView
和ImageButton
,其中包含AddActivity
。
此AddActivity
有一个EditText
(nameAddInput
)和一个Button
(addButton
)。
尽管点击此Button
,ListView
中的MainActivity
仍为空......不明白为什么......
以下是MainActivity的代码:
public class MainActivity extends AppCompatActivity {
static final int PICK_CONTACT_REQUEST = 0;
private ListView list;
private ArrayAdapter<String> adapter;
private ArrayList<String> arrayList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
list = (ListView) findViewById(R.id.itemsList);
arrayList = new ArrayList<>();
adapter = new ArrayAdapter<>(this, R.layout.listview_style1, android.R.id.text1, arrayList);
}
public void onClickAddButton(View view) {
Intent i = new Intent(MainActivity.this, AddActivity.class);
startActivityForResult(i, 2);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == PICK_CONTACT_REQUEST) {
if (resultCode == RESULT_OK) {
addNewItem();
}
}
}
public void addNewItem() {
Bundle addNameInfo = getIntent().getExtras();
if(addNameInfo == null)
return;
String nameInput = addNameInfo.getString("nameInput");
arrayList.add(nameInput);
list.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
}
在ImageButton中的 MainActivity的xml文件:android:onClick="onClickAddButton"
AddActivity的代码:
public class AddActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add);
}
public void backToMain(View view) {
Intent i = new Intent();
EditText nameAddInput = (EditText) findViewById(R.id.nameAddInput);
String userNameText = nameAddInput.getText().toString();
i.putExtra("nameInput", userNameText);
setResult(RESULT_OK, i);
finish();
}
}
按钮中的 AddActivity的xml文件:android:onClick="backToMain"
希望有人可以帮忙! 提前谢谢!!
答案 0 :(得分:0)
getIntent()返回启动MainActivity的意图,而不是您在backInMain中设置的意图
尝试在onActivityResult中传递给你的“数据”变量?
也改为
startActivityForResult(i, PICK_CONTACT_REQUEST);
我还建议您重命名该变量
答案 1 :(得分:0)
在onCreate中设置适配器,只需在addNewItem方法中调用notifyDataSetChanged。
答案 2 :(得分:0)
结果值在onActivityResult函数的Intent data
- 参数中返回,而不是在mainActivity的intent-member中返回。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == PICK_CONTACT_REQUEST) {
if (resultCode == RESULT_OK) {
addNewItem(data.getExtras().getString("nameInput");
}
}
}
...
public void addNewItem(String newItem)
...