1

我正在通过 SQLite 从数据库中获取数据。我将数据记录到数据库并使用 Listview 我想在 xml 中显示数据。但无法启动活动。我是第一次使用 Listview。谢谢你的帮助。

ActivityThread.performLaunchActivity(ActivityThread$ActivityClientRecord, Intent) line: 2180    
ActivityThread.handleLaunchActivity(ActivityThread$ActivityClientRecord, Intent) line: 2230 
ActivityThread.access$600(ActivityThread, ActivityThread$ActivityClientRecord, Intent) line: 141    
ActivityThread$H.handleMessage(Message) line: 1234  
ActivityThread$H(Handler).dispatchMessage(Message) line: 99 
Looper.loop() line: 137 
ActivityThread.main(String[]) line: 5039    
Method.invokeNative(Object, Object[], Class, Class[], Class, int, boolean) line: not available [native method]  
Method.invoke(Object, Object...) line: 511  
ZygoteInit$MethodAndArgsCaller.run() line: 793  
ZygoteInit.main(String[]) line: 560 
NativeStart.main(String[]) line: not available [native method]  

这是java代码;

public class ButceGetirenListView extends ListActivity {

    Spinner yil,ay;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);

        yil=(Spinner)findViewById(R.id.spinnerYillar);
        ay=(Spinner)findViewById(R.id.spinnerAylar);

        String[] result=getiren();
        setListAdapter(new ArrayAdapter<String>(this, R.layout.butcegetir,result));

        ListView listV=getListView();
        listV.setOnItemClickListener(new OnItemClickListener() {

            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                    long arg3) {
                    Toast.makeText(getApplicationContext(),((TextView)arg1).getText(), Toast.LENGTH_SHORT).show();

            }


        });
    }
    protected String[] getiren(){

        int yillar=Integer.valueOf(yil.getSelectedItem().toString());
        String aylar=ay.getSelectedItem().toString();
        TemporaryDatabase tdb=new TemporaryDatabase(this);
        tdb.open();
        String[] result=new String[25];
        result = tdb.getDataHesapla(yillar,aylar);
        tdb.close();
        return result;
    }

}

和xml代码:

<TextView 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/textViewListView"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="15dp">
</TextView>
4

2 回答 2

2

您正在使用:

yil=(Spinner)findViewById(R.id.spinnerYillar);
ay=(Spinner)findViewById(R.id.spinnerAylar);

但是,您的 XML 文件中没有两个具有这些 ID 的 Spinner。事实上,您甚至都不会调用setContentView()来使用您的 XML 文件。

因此,yiland为 null,当您尝试在方法中使用它们时ay会导致 a 。NullPointerExceptiongetiren()

要解决此问题,请将微调器添加到您的布局中,并setContentView()在使用findViewById(). 您还需要添加一个具有以下 ID 的 ListView:

android:id="@android:id/list"

这样就ListActivity可以找到ListView具有自定义自定义布局的。

例子

<YourBaseLayout>
    <ListView
        android:id="@android:id/list" />
    <TextView />
    <firstSpinner />
    <secondSpinner />
</YourBaseLayout>
于 2012-12-21T11:01:27.523 回答
0

出现此问题是因为您忘记写setContentView();行。

解决方案:-

setContentView(R.layout.activity_main)在 onCreate() 方法的这一行之后super.onCreate(savedInstanceState);和之前写下这一行yil=(Spinner)findViewById(R.id.spinnerYillar);,它会解决你的问题。

于 2012-12-21T11:34:01.663 回答