LinearLayout在返回活动后不显示子项



尝试创建一个制作列表的应用程序。要在我的列表中创建一个新元素,我想使用另一个活动。我是这样做的:

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来显示列表。

最新更新