尝试创建一个制作列表的应用程序。要在我的列表中创建一个新元素,我想使用另一个活动。我是这样做的:
public void onNewTask(View view)
{
Intent newTask = new Intent(MainActivity.this, NewTaskActivity.class);
MainActivity.this.startActivityForResult(newTask, 0);
}
返回主活动后,结果如下:
public void onSave(View view){
Intent main = new Intent();
String[] data;
//getting data here//
main.putExtra("New_task", data);
setResult(RESULT_OK, main);
finish();
}
在那之后,线性布局不显示任何子级,尽管如果我调试代码,我可以看到布局中仍然有它们。我正在以编程方式添加子项,如下所示:
LinearLayout linearLayout = findViewById(R.id.toDoLayout); //is in OnCreate()
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams //is in OnCreate()
(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
LinearLayout newLayout = new LinearLayout(this);
newLayout.setOrientation(LinearLayout.HORIZONTAL);
TextView newNumberTextView = new LargeTextViewWithMargins(this);
newNumberTextView.setText("Test");
newLayout.addView(newNumberTextView);
linearLayout.addView(newLayout, layoutParams);
onActivityResult现在是这样的形式:
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
setContentView(R.layout.activity_main);
}
我在这里发现了一个类似的问题。有人知道是什么原因导致了这种情况,以及如何更好地克服这种情况吗?
正如kelvin所建议的,我已经从activityResult中删除了setContenView,这很有帮助。然而,我不明白它是如何运作的,但它现在对我来说是可行的。
setContentView(R.layout.activity_main(;为活动设置XML(布局(当您调用setContentView时,它将在屏幕上展开布局。现在,当您在onActivityResult中再次调用它时,您正在再次膨胀视图。
此外,我建议您使用ListView/RecyclerView来显示列表。