获取列表视图中的空指针

时间:2015-02-07 20:05:34

标签: android nullpointerexception

我很抱歉。我知道这一定是直截了当的。相当熟悉Android的新手。 我正在创建一个主要活动,并尝试在意图的帮助下调用另一个活动。 其他活动包含列表视图。我试图在列表视图中显示简单的字符串。所以我认为我不需要写任何一个获取视图。只需AdapterView应该可以正常工作。 一些代码可以解释我的更多内容如下: 主要活动按钮onClick方法如下:

public void manage(View view) {
    Intent managerIntent;
           managerIntent = new Intent( this,ShowActivity.class);
    managerIntent.putExtra(FILE_URI, mediaStorageDir.getAbsolutePath());
    startActivity(managerIntent);
}

ShowActivity如下:

public class ShowActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ArrayList<String> strings = new ArrayList<String>();
        Intent intent = getIntent();
        MyService sc = new MyService()
        sc.fill(strings,intent);

        final ArrayAdapter<String> ListObject = new ArrayAdapter<String>(ShowReceiptsActivity.this,
                android.R.layout.simple_list_item_1, strings);

        ListView listView = (ListView)findViewById(R.id.listView);// This line gives null pointer exception
        listView.setAdapter(ListObject);
        setContentView(R.layout.activity_show_receipts);
    }
}

activity_show.xml如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.receiptboss.manager.ShowReceiptsActivity">

<ListView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/listView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.receiptboss.manager.ShowReceiptsActivity"/>
</LinearLayout>

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

您必须在setContentView(R.layout.activity_show)课程中的onCreate(Bundle saveInstanceState)方法中致电ShowActivity,如下面的代码所示:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //Here is your missing method
    // as param set R.layout.activity_show or R.layout.activity_show_receipts
    //it is depend of layout xml name 
    setContentView(R.layout.activity_show) 
    ....
}

在您的活动上调用方法findViewById(int)之前,您必须在活动中将布局设置为内容视图。现在你把这个方法称为最后一个 - 这是错误的。