我正在创建一个自定义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)
答案 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