gpt4 book ai didi

java - 创建一个子 Activity 以从列表中选择数据

转载 作者:行者123 更新时间:2023-11-30 01:04:19 25 4
gpt4 key购买 nike

我想创建一个子 Activity ,它将在父 Activity 对象单击时打开。为了更好地理解,请参阅 redbus 应用程序的屏幕截图:

enter image description here enter image description here enter image description here

在第一个屏幕中,用户单击“输入城市”(以红色突出显示),然后转到第二个屏幕,用户通过搜索城市名称来选择城市。然后在点击城市后,用户将返回到选择城市的屏幕 1,并且不会影响屏幕 1 的先前数据。

我试过了,你可以看到代码:

UserDetails.java

@Override
public void onClick(View v) {
switch (v.getId()) {

case R.id.btnCancel:
CancelAll();
break;
case R.id.defenceArea:
DefenceAreaSelection();
break;

default:
}
}

private void DefenceAreaSelection() {

isSelection = true;
ArrayList<Integer> IdList = new ArrayList<>();
for (int i=0;i<mDefenceAreaModel.size();i++){
IdList.add(mDefenceAreaModel.get(i).getDefenseAreaID());
}
Intent intent = new Intent(UserDetails.this, ListSelection.class);
intent.putExtra("names",mDefenceAreaNames);
intent.putExtra("ID",IdList);

//TODO send 2 array for id and names to ease the process
startActivityForResult(intent,requestCodeDefenceArea);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == requestCodeDefenceArea){
Log.e("defe","got it");
}
}

ListSelection.java

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.list_select_screen);
Toolbar myToolbar = (Toolbar) findViewById(R.id.my_toolbar);
setSupportActionBar(myToolbar);

try {
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
} catch (NullPointerException e) {
e.printStackTrace();
//Log.e("exception",e.getMessage());
}
ArrayList<String> listNames = (ArrayList<String>) getIntent().getSerializableExtra("names");
ArrayList<Integer> listId = (ArrayList<Integer>) getIntent().getSerializableExtra("ID");
list = (ListView)findViewById(R.id.listNames);

ArrayAdapter adapter = new ArrayAdapter(ListSelection.this,android.R.layout.simple_dropdown_item_1line,listNames);
list.setAdapter(adapter);

//TODO onitem click set the result and go back to parent activity
}

但我遇到的问题是在选择区域后它返回到上一个屏幕但是屏幕 1 中的先前数据不再存在这意味着除了 Activity Result 之外它还在调用 onCreate() 方法。

最佳答案

最好的办法是使用 EventBus 库。我有一个演示应用程序,您可以在其中使用 EventBus 从应用程序内的任何位置向 RecyclerView 添加项目。您可以将它插入到 TextView 中,而不是 RecyclerView。这是 repo 协议(protocol)的链接:

https://github.com/code-crusher/android-demos/tree/master/EventBusDemo

也请阅读文章以便更好地理解和引用:

https://medium.com/@code_crusher/eventbus-for-android

希望对您有所帮助。快乐编码:)

关于java - 创建一个子 Activity 以从列表中选择数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39036272/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com