Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.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
Java 如何将视图添加到其他布局_Java_Android_Xml_Layout - Fatal编程技术网

Java 如何将视图添加到其他布局

Java 如何将视图添加到其他布局,java,android,xml,layout,Java,Android,Xml,Layout,因此,我有我的main活动及其布局activity\u main.xml。从这个活动中,当按下Print按钮时,我希望该活动发送用户输入的数据,并将文本视图添加到我的lista.xml,该视图将转换为位图,然后发送到我的收据打印机 在经历了一段关于获取NullPointerException的头疼之后,我学会了我必须做类似的事情setContentView(R.layout.lista)在执行此操作之前ll1=(LinearLayout)findViewById(R.id.layoutlista

因此,我有我的
main活动
及其布局
activity\u main.xml
。从这个活动中,当按下
Print
按钮时,我希望该活动发送用户输入的数据,并将文本视图添加到我的
lista.xml
,该视图将转换为位图,然后发送到我的收据打印机

在经历了一段关于获取NullPointerException的头疼之后,我学会了我必须做类似的事情
setContentView(R.layout.lista)在执行此操作之前
ll1=(LinearLayout)findViewById(R.id.layoutlista1)。
问题是,这会切换我看到的布局,当使用setContentView时,它会显示我的
lista.xml
。我想我可以通过使用
setContentView(R.layout.activity\u main)
来解决这个问题,但我很确定这不是实现我想要的目标的方法

所以我的问题是,如何从当前活动布局向另一个布局添加视图而不获得nullPointerException

这是我的
lista.xml
布局:


嗯,如果你还想知道答案,那么你可以从这篇文章中读到

如果您仍然想知道如何初始化充气机,那么这将是另一种方式

LayoutInflater inflater = (LayoutInflater)getBaseContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
我是从你那里得到这个主意的。我会再写一遍,希望这能有所帮助。没有检查它是否正常工作

//at first add contain view to main layout
setContentView(R.layout.activity_main);

//set reference to recently mail layout. Set id to your main layout
//change it to watever LinerLayout ...etc
RelativeLayout mainLayout = (RelativeLayout) findViewById(R.id.your_main_layout);

// create inflater 
LayoutInflater inflater = (LayoutInflater) getBaseContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);

// infalate lista and infalate it to root - main layout in this case.
// check http://developer.android.com/reference/android/view/LayoutInflater.html for more

View view = (View) inflater.inflate(R.layout.lista, mainLayout, true);

// doing blah blah with view

嗯,我没有检查它是否有效,但我认为它应该有效。

我想您应该使用
LayoutInflater
加载一些版面,并将其作为子版面添加到其他版面。但我不知道哪种布局应该包括在哪里。当我打开我的应用程序时,主活动以其布局
activity\u main
启动。在该活动中,我有一个按钮,必须将文本视图添加到另一个名为
lista.xml
的布局中的某些布局中。虽然我初始化了布局,但它们上会出现NullPointerException。这是为什么?
activity\findViewById()
将仅在您用
setContentView
设置的视图层次结构中找到视图。它不会在其他布局中找到它。但是您可以通过
LayoutInflater
(返回
视图
)加载其他版面,然后在加载的版面上使用
View.findViewById()
。这种布局不需要是可见的工作,这听起来像我需要的!我只是在研究Layoututines,但我找不到我需要的。你能给我一个答案,并举例说明我应该做什么吗?我已经做了,它不返回NPE,但也不添加视图`视图;LayoutFlater充气器=(LayoutFlater)getBaseContext().getSystemService(Context.LAYOUT\u充气器\u服务);视图=充气机。充气(R.layout.lista,空);LinearLayout ll1=(LinearLayout)view.findViewById(R.id.layoutlista1);TextView temporar=新的TextView(此);临时设置文本(“测试”);ll1.addView(临时)`ll1现在膨胀了。。。您已经创建了临时视图并将其添加到ll1。但您是否将膨胀到ContentView的ll1视图添加到了???
LayoutInflater inflater = (LayoutInflater)getBaseContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
//at first add contain view to main layout
setContentView(R.layout.activity_main);

//set reference to recently mail layout. Set id to your main layout
//change it to watever LinerLayout ...etc
RelativeLayout mainLayout = (RelativeLayout) findViewById(R.id.your_main_layout);

// create inflater 
LayoutInflater inflater = (LayoutInflater) getBaseContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);

// infalate lista and infalate it to root - main layout in this case.
// check http://developer.android.com/reference/android/view/LayoutInflater.html for more

View view = (View) inflater.inflate(R.layout.lista, mainLayout, true);

// doing blah blah with view