gpt4 book ai didi

android - 从 Activity 到 Main Activity 的返回列表?

转载 作者:行者123 更新时间:2023-11-29 14:58:52 25 4
gpt4 key购买 nike

我希望 MainActivity 调用一个 SecondActivity 并且 SecondActivity 返回一个字符串列表。

我读过的每个答案都解释了如何将数据从 MainActivity 传递到 SecondActivity

我创建了一个 Activity 来计算内部网络中所有可能的 IP 并将它们保存在一个列表中。我想将此列表传递给 MainActivity。你能建议我一些链接或代码来解决我的问题吗?我是 Android Studio 的新手,但我必须这样做。这里是 MainActivity

的代码 fragment
 b1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
boolean check_conn = false;
check_conn = checkInternetConnection();//check if you are on internet

if (check_conn){
//we have connection
// find the all the possible IPs
Intent intent = new Intent(MainActivity.this, rangeIP_test.class);
startActivity(intent);
}
else {
// do something annoying
Toast.makeText(MainActivity.this,
"We need Internet Connection!", Toast.LENGTH_LONG).show();
}
}
});

计算IP的rangeIP_test Activity

WifiManager my_wifi = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
String subnet = getSubnetAddress(my_wifi.getDhcpInfo().gateway);
IPs = findIP(subnet);

public List<String> findIP(String subnet){
List<String> all_IPs;// All IPs on network
all_IPs = new ArrayList<>();

for (int i=2; i<255; i++){
String host = subnet + "." + i;

all_IPs.add(host);
}
return all_IPs;
}

最佳答案

启动 Activity ,rangeIP_test,得到如下结果(即主机字符串列表):

 Intent intent = new Intent(MainActivity.this, rangeIP_test.class);
startActivityForResult(intent,RC_LIST_STRING);

MainActivity.java 中将 RC_LIST_STRING 定义为这样的字段:

 private static final int RC_LIST_STRING = 10001;

覆盖 onActivityResult()MainActivity.java 中像这样:

 @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// Check which request we're responding to
if (requestCode == RC_LIST_STRING) {
// Make sure the request was successful
if (resultCode == RESULT_OK) {
// get the list of strings here
ArrayList<String> myHosts = (ArrayList<String>) data.getSerializableExtra("myHosts"); // key must be matching
// do operations on the list
}
}
}

rangeIP_test.java中,成功获取所有主机并将它们添加到列表中后,您可以将列表传递回任何启动的 Activity (此处为MainActivity)当前 Activity (此处为 rangeIP_test)如下所示:

Intent intent = new Intent();
intent.putExtra("myHosts", (Serializable) IPs);
setResult(RESULT_OK, intent);
finish();

现在,您已经完成了 rangeIP_test Activity ,您回到了 MainActivity 并且因为您已经覆盖了 onActivityResult(),你会在那边得到主机列表。

请记住,在此示例中,您要将主机列表转换为序列化类型并将其传递给之前的 Activity 。自 StringArrayList已经实现 Serializable接口(interface),您将不会得到任何unable to marshal value error .但是,在围绕 Activity 传递模型对象时,您需要首先使模型类实现 Serializable 接口(interface),然后再按上述方式继续操作。

更好的方法是将模型类转换为Parcelable,然后在 Activity 之间传递数据。请引用这个link了解更多信息。

关于android - 从 Activity 到 Main Activity 的返回列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52778935/

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