我已经查看了其他问题并且没有发现任何与此情况完全匹配的内容。我在XML中定义了一个RelativeLayout。我想将整个RelativeLayout放在GraphView对象下面(来自我单独创建的类)。我认为将RelativeLayout放在GraphView下面的最好方法就是将这两个放在LinearLayout中,我试图以编程方式定义它。
这就是我到目前为止 - 它有什么问题,但我不太确定是什么。
import android.app.Activity;
import android.os.Bundle;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
public class Grapher extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LinearLayout ll = new LinearLayout(this);
GraphView gv = new GraphView(this);
RelativeLayout rl = (RelativeLayout) findViewById(R.id.mainRelativeLayout);
ll.addView(gv);
ll.addView(rl);
setContentView(ll);
和xml ....
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/mainRelativeLayout"
android:orientation="vertical">
<Button
android:id="@+id/second"
android:clickable="true"
android:background="@drawable/button_chooser"
android:layout_width="70dp"
android:layout_height="40dp"
android:text="@string/second"
android:textColor="@color/white"
android:textSize="15sp"/>
<Button
android:id="@+id/alpha"
android:clickable="true"
android:background="@drawable/button_chooser"
android:layout_width="70dp"
android:layout_height="40dp"
android:layout_below="@id/second"
android:layout_alignParentLeft="true"
android:text="@string/alpha"
android:textColor="@color/white"
android:textSize="15sp" />
<Button
android:id="@+id/mode"
android:clickable="true"
android:background="@drawable/button_chooser"
android:layout_width="70dp"
android:layout_height="40dp"
android:layout_toRightOf="@id/second"
android:text="@string/mode"
android:textColor="@color/white"
android:textSize="15sp" />
</RelativeLayout>
感谢您的帮助。我有一种预感,这只是我看到的非常简单的事情。
答案 0 :(得分:3)
Activity.findViewById
搜索绑定到活动的视图(通常是调用setLayout(R.layout.yourlayout);
的结果)。由于您没有调用此方法,因此当前没有任何视图处于活动状态,因此调用findViewById
将返回null。
您尝试做的是从xml中扩展布局,然后以编程方式将其添加到视图中。你应该做的是这样的事情:
Inflater inflater = LayoutInflater.from(context);
//this will inflate the mainRelativeLayout into the linear layout you called "ll"
inflater.inflate(R.id.mainRelativeLayout, ll);