-1

这里我的 xml 文件放入列表中:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
     android:background="#FFFFFF"
    android:orientation="horizontal" >

    <LinearLayout
        android:id="@+id/layout2"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:orientation="vertical" >

        <Button
            android:id="@+id/check"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Button"
            android:focusable="false" />

        <TextView
            android:id="@+id/tvCityName"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="" 
           android:textSize="15dp"
           android:textColor="@drawable/text_hover"


           android:paddingLeft="30dp"
           android:paddingTop="9dp"
            android:textStyle="normal"
           android:background="@drawable/dest_hover"


            />

    </LinearLayout>



</LinearLayout>

这是我处理 listview 的 java 代码:

ListView lst;
Button chk;
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.destination);
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
 lst=(ListView)findViewById(R.id.listViewCities);
         lst.setFocusable(false);
            chk=(Button)findViewById(R.id.check);   
            chk.setFocusableInTouchMode(false);
            chk.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    Log.i("sukjhdskfskdgf", "ggogogogogogogogoggo");

                }
            });

    }

Log cat 中显示的错误:

08-30 05:43:30.440: E/AndroidRuntime(1442): FATAL EXCEPTION: main
08-30 05:43:30.440: E/AndroidRuntime(1442): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.emaven.triphills/com.emaven.triphills.Tab}: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.emaven.triphills/com.emaven.triphills.Destination}: java.lang.NullPointerException
08-30 05:43:30.440: E/AndroidRuntime(1442):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
08-30 05:43:30.440: E/AndroidRuntime(1442):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
08-30 05:43:30.440: E/AndroidRuntime(1442):     at android.app.ActivityThread.access$600(ActivityThread.java:141)
08-30 05:43:30.440: E/AndroidRuntime(1442):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
08-30 05:43:30.440: E/AndroidRuntime(1442):     at android.os.Handler.dispatchMessage(Handler.java:99)
08-30 05:43:30.440: E/AndroidRuntime(1442):     at android.os.Looper.loop(Looper.java:137)
08-30 05:43:30.440: E/AndroidRuntime(1442):     at android.app.ActivityThread.main(ActivityThread.java:5041)
08-30 05:43:30.440: E/AndroidRuntime(1442):     at java.lang.reflect.Method.invokeNative(Native Method)
08-30 05:43:30.440: E/AndroidRuntime(1442):     at java.lang.reflect.Method.invoke(Method.java:511)
08-30 05:43:30.440: E/AndroidRuntime(1442):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
08-30 05:43:30.440: E/AndroidRuntime(1442):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
08-30 05:43:30.440: E/AndroidRuntime(1442):     at dalvik.system.NativeStart.main(Native Method)
08-30 05:43:30.440: E/AndroidRuntime(1442): Caused by: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.emaven.triphills/com.emaven.triphills.Destination}: java.lang.NullPointerException
08-30 05:43:30.440: E/AndroidRuntime(1442):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
08-30 05:43:30.440: E/AndroidRuntime(1442):     at android.app.ActivityThread.startActivityNow(ActivityThread.java:2023)
08-30 05:43:30.440: E/AndroidRuntime(1442):     at android.app.LocalActivityManager.moveToState(LocalActivityManager.java:135)
08-30 05:43:30.440: E/AndroidRuntime(1442):     at android.app.LocalActivityManager.startActivity(LocalActivityManager.java:347)
08-30 05:43:30.440: E/AndroidRuntime(1442):     at android.widget.TabHost$IntentContentStrategy.getContentView(TabHost.java:749)
08-30 05:43:30.440: E/AndroidRuntime(1442):     at android.widget.TabHost.setCurrentTab(TabHost.java:413)
08-30 05:43:30.440: E/AndroidRuntime(1442):     at android.widget.TabHost.addTab(TabHost.java:240)
08-30 05:43:30.440: E/AndroidRuntime(1442):     at com.emaven.triphills.Tab.onCreate(Tab.java:28)
08-30 05:43:30.440: E/AndroidRuntime(1442):     at android.app.Activity.performCreate(Activity.java:5104)
08-30 05:43:30.440: E/AndroidRuntime(1442):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
08-30 05:43:30.440: E/AndroidRuntime(1442):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
08-30 05:43:30.440: E/AndroidRuntime(1442):     ... 11 more
08-30 05:43:30.440: E/AndroidRuntime(1442): Caused by: java.lang.NullPointerException
08-30 05:43:30.440: E/AndroidRuntime(1442):     at com.emaven.triphills.Destination.onCreate(Destination.java:51)
08-30 05:43:30.440: E/AndroidRuntime(1442):     at android.app.Activity.performCreate(Activity.java:5104)
08-30 05:43:30.440: E/AndroidRuntime(1442):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
08-30 05:43:30.440: E/AndroidRuntime(1442):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
08-30 05:43:30.440: E/AndroidRuntime(1442):     ... 21 more

请帮我解决这个问题。感谢您

4

3 回答 3

1

好吧,您单击的按钮位于您要添加到的另一个 xml 文件中,Listview但不在destination.xml您的主要布局中。这就是为什么你得到这个例外。

查看您的代码,我可以建议您以下内容,

getView()像这样在 Listview 适配器中获取按钮,

View vi = convertView;

Button  chk=(Button)vi.findViewById(R.id.check);  
 chk.setFocusableInTouchMode(false);
            chk.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    Log.i("sukjhdskfskdgf", "ggogogogogogogogoggo");

                }
            });
于 2013-08-30T06:04:12.543 回答
0

请在清单文件的应用程序标签内添加活动类

<activity android:name="com.emaven.triphills.Destination"/>
于 2013-08-30T06:02:25.017 回答
0

很抱歉这么说,但你这样做完全错了。您应该花时间阅读一个好的列表视图教程。

ListView 背后的基本思想是拥有一个包含数据集中项目的列表。为此,您定义了一个带有 ListView 的 Activity 布局。您创建一个布局来显示单个项目(我怀疑这是您包含的布局)。要填充列表视图,您必须定义一个接收数据集的适配器,并为各个项目生成视图。

Android 平台为带有默认项目视图的字符串数组提供默认列表适配器,但如果您想在每个项目上都有一个按钮,则必须创建自己的布局和适配器。

顺便说一句,如果您只有一个动作 - Check - 与每个项目相关联,您可以使用简单的 itemclicklistener 并松开按钮。这样您就可以使用默认列表适配器。

如果检查导致某种选择状态,请查看多选模式。

于 2013-08-30T06:18:45.033 回答