Android:为不同的活动添加布局';s布局
当前正在尝试从其他活动向我的主布局(activity_main.xml)添加布局(box.xml),但在正确执行此操作时遇到问题。下面是我尝试做的一个例子: (注意:为了简单起见,删除了参数) activity_main.xmlAndroid:为不同的活动添加布局';s布局,android,android-layout,Android,Android Layout,当前正在尝试从其他活动向我的主布局(activity_main.xml)添加布局(box.xml),但在正确执行此操作时遇到问题。下面是我尝试做的一个例子: (注意:为了简单起见,删除了参数) activity_main.xml box.xml CreateNewBoxActivity.java (注意:My MainActivity.java调用startActivity(新的意图(这个,CreateNewBoxActivity.class))) 公共类CreateNewBoxActi
box.xml
CreateNewBoxActivity.java
(注意:My MainActivity.java调用startActivity(新的意图(这个,CreateNewBoxActivity.class)))
公共类CreateNewBoxActivity扩展活动{
私有图像按钮mFinish;
...
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_newBox);
mFinish=(图像按钮)findviewbyd(R.id.btn_finish);
mFinish.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图)
{
//在activity_main.xml中的位置添加box.xml
finish();//关闭此活动并返回主活动以查看
//增加了框布局
}
});
...
}
}
感谢您对如何添加此布局的任何帮助!不确定解决此问题的最佳方法。您将需要使用充气工具来充气box.xml
。确保要将box.xml
添加到的LinearLayout
具有id
。用类似的方法对布局进行充气
LinearLayout ll = (LinearLayout) findViewById(R.id.llId);
然后,您可以使用将框布局添加到线性布局
编辑
在进一步讨论之后,OP希望将第二个活动中的布局
中的某些元素添加到第一个活动中使用的布局
。通过使用startActivityForResult()
并将数据传回第一个活动
,这将更容易实现
然后,在第一个活动中的onActivityResult()
中,可以使用前面提到的方法(膨胀并调用addView()
)将适当的布局添加到原始布局中
如何处理数据以及需要添加的内容完全取决于开发人员如何处理数据。数据可以从第二个活动添加到模型类中,然后在onActivityResult()中进行检查和添加,或者同样的方法可以检查通过setResult()传回的Intent
数据
包含一个示例和传回数据所需的方法
有一个使用startActivityForResult()的简单示例
并传回Intent
数据。您必须以编程方式进行还是可以将其添加到xml中?为什么不将其添加到xml中并切换可见性?@codeMagic:我想以编程方式添加框,以使添加框更具动态性,从而更好地控制用户。除非用户想创建一个新的框,否则我根本不想让框出现在那里。@FD:我曾考虑使用ViewStub来限制用户可以添加的框的数量,但我在从我的CreateNewBoxActivity中查找main_activity.xml ViewStub时遇到了困难,因为我的setContentView设置为R.layout.activity_NewBox当我膨胀box.xml时,我应该为ViewGroup参数传入什么?TableLayout box=(TableLayout)充气机充气(R.layout.box,?);null
或要将其附加到的ViewGroup
。我想这解释得很好。我的LinearLayout上有一个nullpointerException,这是因为该布局位于我的activity_main.xml中吗?我能够膨胀我的box.xml(通过使用调试器),但似乎无法将该视图添加到我的linearlayoutOh是的,对不起。我以为你是想在活动
中做这件事,该活动将main
作为其布局
。你想把它放在一个布局中,这个布局不适合活动???这是向后的,不会起作用。如果我弄糊涂了,很抱歉:(是的,我基本上想在activity_main.xml中将box.xml添加到LinearLayout中,而在activity CreateNewBoxActivity中,它的setContentView()调用具有不同的布局。
<TableLayout>
<TableRow>
<TextView/>
<ImageView/>
</TableRow>
<TableRow>
<TextView/>
<Button/>
</TableRow>
</TableLayout>
public class CreateNewBoxActivity extends Activity {
private ImageButton mFinish;
...
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_newBox);
mFinish = (ImageButton) findViewById(R.id.btn_finish);
mFinish.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view)
{
//add box.xml where <include layout> is located in activity_main.xml
finish(); //close this activity and back to main activity to see
//added box layout
}
});
...
}
}
LinearLayout ll = (LinearLayout) findViewById(R.id.llId);