Android ListView performLaunchActivity错误不显示xml布局

标签 android xml listview android-arrayadapter

我正在通过 SQLite 从数据库中获取数据。我将数据记录到数据库并使用 Listview 我想在 xml 中显示数据。但无法启动 Activity 。我是第一次使用 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>

最佳答案

您正在使用:

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

但是,在您的 XML 文件中没有任何地方有两个具有这些 ID 的 Spinner。事实上,您甚至从未调用 setContentView() 来使用您的 XML 文件。

因此,yilay 为 null,当您尝试在 中使用它们时将导致 NullPointerException getiren() 方法。

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

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

以便 ListActivity 可以找到具有自定义布局的 ListView

示例

<YourBaseLayout>
    <ListView
        android:id="@android:id/list" />
    <TextView />
    <firstSpinner />
    <secondSpinner />
</YourBaseLayout>

关于Android ListView performLaunchActivity错误不显示xml布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13988797/

相关文章:

xml - 解码混合对象类型的 xml 数组

JavaScript——这个单选按钮被选中了吗?

c# - 每行带有按钮的 WPF ListView

android - OnCompletionListener - 应用程序停止工作

android - getDefaultSharedPreferences 不在服务之间保存

c# - 如何使用 .NET 3.5 从 XML 文件中读取处理指令

C# ListView在List模式下调整Item宽度

javascript - 在 Kendo UI Mobile kendoMobileListView 中,选择列表中的项目后清除可过滤输入字段

android - 在android中将位图转换为棕褐色

java - 在VpnService中创建套接字会卡住线程