生成的listview应用程序的意图停止工作

时间:2013-11-06 17:53:55

标签: android android-intent android-listview

我正在尝试运行一个Android应用程序,其中我有MainActivity,其中包含生成的ListViewTextView项和一个Intent,以便当用户点击第一个项目时在列表视图中,他转到名为PortalActivity的第二个活动。这是我到目前为止所做的尝试。当我尝试在eclipse android模拟器中运行它时,它会显示这个弹出窗口'不幸的是,myApp停止工作'。

public class MainActivity extends ListActivity
{
    final String[] menuItems = {"Portal", "Settings", "Help", "About"};

    @Override
    protected void onCreate (Bundle savedInstanceState)
    {
         super.onCreate(savedInstanceState);
         setListAdapter(new ArrayAdapter<String>(MainActivity.this, R.layout.listview_item, R.id.listview_tv, menuItems));

         ListView yourListView = (ListView) findViewById(R.id.listview_tv);
         yourListView.setOnItemClickListener(new OnItemClickListener() 
         {
              @Override
              public void onItemClick(AdapterView<?> parent, View view, int position, long id)    {
                  if (position == 0)
                  {
                    Intent myIntent = new Intent(MainActivity.this,PortalActivity.class);
                    startActivity(myIntent);
                  }
              }
         });
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu)
    {
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
}

listview_item.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="match_parent"
    android:orientation="vertical" >

    <TextView 
        android:id="@+id/listview_tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="#000000"
        android:text="TextView"  
    />

</LinearLayout>

和PortalActivity只是一个具有另一个已定义布局的活动。我确定问题与意图有关,因为在评论时,应用运行并显示列表视图,门户网站活动的布局也正常。

这是Log Cat中的StackTrace

11-06 13:05:35.167: E/AndroidRuntime(1590): FATAL EXCEPTION: main
11-06 13:05:35.167: E/AndroidRuntime(1590): Process: com.example.androidexample, PID: 1590
11-06 13:05:35.167: E/AndroidRuntime(1590): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.androidexample/com.example.androidexample.MainActivity}: java.lang.NullPointerException
11-06 13:05:35.167: E/AndroidRuntime(1590):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2176)
11-06 13:05:35.167: E/AndroidRuntime(1590):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2226)
11-06 13:05:35.167: E/AndroidRuntime(1590):     at android.app.ActivityThread.access$700(ActivityThread.java:135)
11-06 13:05:35.167: E/AndroidRuntime(1590):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1397)
11-06 13:05:35.167: E/AndroidRuntime(1590):     at android.os.Handler.dispatchMessage(Handler.java:102)
11-06 13:05:35.167: E/AndroidRuntime(1590):     at android.os.Looper.loop(Looper.java:137)
11-06 13:05:35.167: E/AndroidRuntime(1590):     at android.app.ActivityThread.main(ActivityThread.java:4998)
11-06 13:05:35.167: E/AndroidRuntime(1590):     at java.lang.reflect.Method.invokeNative(Native Method)
11-06 13:05:35.167: E/AndroidRuntime(1590):     at java.lang.reflect.Method.invoke(Method.java:515)
11-06 13:05:35.167: E/AndroidRuntime(1590):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777)
11-06 13:05:35.167: E/AndroidRuntime(1590):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593)
11-06 13:05:35.167: E/AndroidRuntime(1590):     at dalvik.system.NativeStart.main(Native Method)
11-06 13:05:35.167: E/AndroidRuntime(1590): Caused by: java.lang.NullPointerException
11-06 13:05:35.167: E/AndroidRuntime(1590):     at com.example.androidexample.MainActivity.onCreate(MainActivity.java:25)
11-06 13:05:35.167: E/AndroidRuntime(1590):     at android.app.Activity.performCreate(Activity.java:5243)
11-06 13:05:35.167: E/AndroidRuntime(1590):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
11-06 13:05:35.167: E/AndroidRuntime(1590):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2140)
11-06 13:05:35.167: E/AndroidRuntime(1590):     ... 11 more

有人知道出了什么问题吗?我是Android的新手,所以感谢您的帮助:)

1 个答案:

答案 0 :(得分:1)

此次电话

     ListView yourListView = (ListView) findViewById(R.id.listview_tv);

返回null,因为布局中没有ListView且资源ID为R.id.listview_tv。接下来的行

     yourListView.setOnItemClickListener(new OnItemClickListener() 

获得NullPointerException,因为yourListView为空。

由于您要延长ListActivity,要获取ListView窗口小部件,您需要像这样调用getListView()

ListView yourListView = getListView();