尝试在android中添加两个setContentView时出现空指针异常

时间:2012-12-04 07:44:33

标签: android

我正在创建一个自定义ListView,其中我的ListView xml是keywordList。我也正在使用教程http://mtmurdockblog.com/2011/10/17/navigation-bar-for-android/以编程方式创建自定义导航栏。因为ListView xml有两个setContentView(),导航栏有两个。我得到异常你可以帮我解决下面的代码。

public class KeywordListView extends Activity{
public LinkedList<String> mListItems;
KeyWordAdapter keywordAdapter;
ProgressDialog  progressDialog=null;
Runnable updateRunnable;    
public static String email;
Button btnSettings;
Button btnAddKeyWord;
static ListView lv;
public final Handler myHandler = new Handler();
static ArrayAdapter<String> arrayAdapter;

public static List<KeyWordDetails>responseArray;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.keywordlist);
LinearLayout ll = new LinearLayout(this);

NavigationBar nb = new NavigationBar(this);
nb.setLeftBarButton("Back");
nb.setRightBarButton("Menu");
nb.setBarTitle("The Bar Title");
NavigationBar.NavigationBarListener nbl = new NavigationBar.NavigationBarListener() {
    @Override
    public void OnNavigationButtonClick(int which) {
        // TODO Auto-generated method stub  
    }
};
nb.setNavigationBarListener(nbl);
ll.addView(nb);
setContentView(ll); 

错误Logcat: -

12-04 13:17:49.780: E/AndroidRuntime(1533): FATAL EXCEPTION: main

   12-04 13:17:49.780: E/AndroidRuntime(1533): java.lang.RuntimeException: Unable to start  
   activity ComponentInfo{com.example.shortcode/com.example.shortcode.KeywordListView}:   java.lang.NullPointerException
12-04 13:17:49.780: E/AndroidRuntime(1533):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
12-04 13:17:49.780: E/AndroidRuntime(1533):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
12-04 13:17:49.780: E/AndroidRuntime(1533):     at android.app.ActivityThread.access$1500(ActivityThread.java:117)
12-04 13:17:49.780: E/AndroidRuntime(1533):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
12-04 13:17:49.780: E/AndroidRuntime(1533):     at android.os.Handler.dispatchMessage(Handler.java:99)
12-04 13:17:49.780: E/AndroidRuntime(1533):     at android.os.Looper.loop(Looper.java:123)
12-04 13:17:49.780: E/AndroidRuntime(1533):     at android.app.ActivityThread.main(ActivityThread.java:3683)
12-04 13:17:49.780: E/AndroidRuntime(1533):     at java.lang.reflect.Method.invokeNative(Native Method)
12-04 13:17:49.780: E/AndroidRuntime(1533):     at java.lang.reflect.Method.invoke(Method.java:507)
12-04 13:17:49.780: E/AndroidRuntime(1533):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
12-04 13:17:49.780: E/AndroidRuntime(1533):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
12-04 13:17:49.780: E/AndroidRuntime(1533):     at dalvik.system.NativeStart.main(Native Method)
12-04 13:17:49.780: E/AndroidRuntime(1533): Caused by: java.lang.NullPointerException
12-04 13:17:49.780: E/AndroidRuntime(1533):     at com.example.shortcode.KeywordListView.onCreate(KeywordListView.java:111)
12-04 13:17:49.780: E/AndroidRuntime(1533):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
12-04 13:17:49.780: E/AndroidRuntime(1533):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)

3 个答案:

答案 0 :(得分:1)

我说避免两次调用setContentView。如果你这样做,第一个将被覆盖。这可能就是你获得例外的原因。尝试创建一个xml布局文件并定义所需的所有视图。

答案 1 :(得分:1)

再次检查教程,他只使用了一次setContentView。 ll.addView(NB); 的setContentView(LL); 你应该在listView中加载关键字,然后在listView中添加导航栏 li.addView(的导航栏);

OR

您可以使用XML进行导航,然后可以在该导航栏下方添加listView。之后以编程方式在listview中加载关键字。我已经提出了这样的观点,请查看

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:weightSum="100" >

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="9"
                    android:background="@drawable/header" >

        <ImageView
            android:id="@+id/imageViewHome"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:layout_gravity="center"
            android:layout_marginBottom="5dp"
            android:layout_marginLeft="5dp"
            android:layout_marginTop="5dp"
            android:scaleType="fitCenter"
            android:src="@drawable/home" />

        <TextView
            android:id="@+id/textViewTitle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:layout_gravity="center_vertical|center_horizontal"
            android:text="Groups"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:textColor="@android:color/white"
            android:textStyle="bold" />

        <ImageView
            android:id="@+id/imageViewCreate"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:layout_marginRight="5dp"
            android:layout_toLeftOf="@+id/imageViewDelete"
            android:src="@drawable/add" />

        <ImageView
            android:id="@+id/imageViewDelete"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true"
            android:layout_gravity="center_vertical"
            android:layout_marginRight="5dp"
            android:scaleType="fitXY"
            android:src="@drawable/delete" />
    </RelativeLayout>

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="9"
        android:background="@drawable/bg_gradient_grey" >

        <EditText
            android:id="@+id/editTextSearch"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_marginBottom="5dp"
            android:layout_marginLeft="15dp"
            android:layout_marginRight="15dp"
            android:layout_marginTop="5dp"
            android:background="@drawable/rounded_edges"
            android:ellipsize="end"
            android:ems="15"
            android:hint="Search"
            android:singleLine="true"
            android:textSize="15dp" >

            <requestFocus />
        </EditText>

        <ImageButton
            android:id="@+id/imageButtonSearch"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:layout_alignParentRight="true"
            android:layout_alignParentTop="true"
            android:layout_alignWithParentIfMissing="true"
            android:layout_centerInParent="false"
            android:layout_centerVertical="true"
            android:layout_gravity="center"
            android:layout_marginRight="25dp"
            android:background="@null"
            android:src="@drawable/ic_action_search" />
    </RelativeLayout>

    <ListView
        android:id="@+id/groupsList"
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="82"
        android:background="@android:color/white"
        android:cacheColorHint="#00000000" >
    </ListView>
</LinearLayout>

答案 2 :(得分:0)

你在哪里扩展超类Activity? onCreate()是此类中的一个方法,您可以覆盖它,请参阅http://developer.android.com/reference/android/app/Activity.html