java - 将数据从多个活动传递到一个活动
问题描述
我用三个类似的 ListViews 创建了三个不同的活动,并用一个按钮创建了另一个活动。
目的是从任何 ListView 中选择任何项目,它将 Button 文本更改为我选择的选定项目。
这是我用来创建 ListViews 的代码:
public class C_Camera extends AppCompatActivity {
ListView listView_C_Camera;
String[] listview_c_camera = new String[]{
"a" , "b", "c", "d" , "e" , "f","g", "h","i","j"
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_c__camera);
listView_C_Camera = findViewById(R.id.listview_c_camera);
ArrayAdapter<String> CanonCamera = new ArrayAdapter<>(this , R.layout.listview_row,listview_c_camera);
listView_C_Camera.setAdapter(CanonCamera);
listView_C_Camera.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String C_Camera_Temp = listview_c_camera[position];
Intent intent = new Intent(C_Camera.this, BuildCamera.class);
intent.putExtra("C_Camera",C_Camera_Temp);
startActivity(intent);
}
});
}
}
我有另一个带有 Button 的活动,它将获取三个不同 ListViews 的值。
public class BuildCamera extends AppCompatActivity {
Button camerabuild;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_build_camera);
camerabuild = findViewById(R.id.camerabuild);
String C_Camera_Holder = getIntent().getStringExtra("C_Camera");
String N_Camera_Holder = getIntent().getStringExtra("N_Camera");
String S_Camera_Holder = getIntent().getStringExtra("S_Camera");
camerabuild.setText(C_Camera_Holder);
camerabuild.setText(N_Camera_Holder);
camerabuild.setText(S_Camera_Holder);
...
在这里我面临一个问题。
如果我使用String C_Camera_Holder = getIntent().getStringExtra("C_Camera")
并评论其他人,它将起作用并更改文本,
String C_Camera_Holder = getIntent().getStringExtra("C_Camera");
// String N_Camera_Holder = getIntent().getStringExtra("N_Camera");
// String S_Camera_Holder = getIntent().getStringExtra("S_Camera");
camerabuild.setText(C_Camera_Holder);
// camerabuild.setText(N_Camera_Holder);
// camerabuild.setText(S_Camera_Holder);
但是如果我取消注释第二个(String N_Camera_Holder = getIntent().getStringExtra("N_Camera")
),第一个将停止更改文本,第二个将停止更改,依此类推。
String C_Camera_Holder = getIntent().getStringExtra("C_Camera");
String N_Camera_Holder = getIntent().getStringExtra("N_Camera");
// String S_Camera_Holder = getIntent().getStringExtra("S_Camera");
camerabuild.setText(C_Camera_Holder);
camerabuild.setText(N_Camera_Holder);
// camerabuild.setText(S_Camera_Holder);
解决方案
该按钮将始终带有您调用的最后一个 setText() 函数。
camerabuild.setText(C_Camera_Holder);
camerabuild.setText(N_Camera_Holder);
camerabuild.setText(S_Camera_Holder); <<----------which is, this one.
要使其在您的活动意图上动态化,您可以使用if
语句。
像这样
if(C_Camera_Holder != null){
camerabuild.setText(C_Camera_Holder);
}else if(N_Camera_Holder != null){
camerabuild.setText(N_Camera_Holder);
}else if(S_Camera_Holder != null){
camerabuild.setText(S_Camera_Holder);
}
推荐阅读
- php - 流明定制服务商
- git - GitLab:如何从 git 远程存储库中仅提取所需的文件夹
- reactjs - 'album' 未在 defaultValues 中定义,useForm()
- jquery - 通过具有子函数的函数扩展 Jquery 函数
- javascript - 在将元素附加到 DOM 之后调用 getBoundingClientRect()
- python - 如何绘制轴对象?
- azure - 在 azure 消费使用详情 api 中,metric 类型 actualcost、usagecost 和 amortizedcost 有什么区别?
- sql - 连接表以获取空行
- javascript - Javascript 等价于 Jquerys :first / :last
- android - 我可以在 dumpState 中看到未确认通知