1

我环顾了其他问题,但没有发现任何与这种情况完全匹配的东西。我在 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>

谢谢你的帮助。我有一种预感,这只是我正在查看的非常简单的事情。

4

1 回答 1

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);
于 2012-06-29T00:39:01.613 回答