Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android:为不同的活动添加布局';s布局_Android_Android Layout - Fatal编程技术网

Android:为不同的活动添加布局';s布局

Android:为不同的活动添加布局';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

当前正在尝试从其他活动向我的主布局(activity_main.xml)添加布局(box.xml),但在正确执行此操作时遇到问题。下面是我尝试做的一个例子:

(注意:为了简单起见,删除了参数)

activity_main.xml


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);