获取列表视图中的空指针

Null pointer in fetching list view

提前致歉。我知道这必须是直截了当的。 android 相当新手。 我正在创建一个主 activity 并尝试在意图的帮助下调用另一个 activity。 其他 activity 包含列表视图。我试图在列表视图中显示简单的字符串。所以我认为我不需要写任何获取视图。只有 AdapterView 应该可以正常工作。 一些代码来解释更多我在做什么,如下所示: 主要Activity按钮的onClick方法如下:

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

显示Activity如下:

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>

非常感谢任何帮助。

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

@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) 
    ....
}

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