获取列表视图中的空指针
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 中将布局设置为内容视图。现在你最后调用这个方法 - 这是错误的。
提前致歉。我知道这必须是直截了当的。 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 中将布局设置为内容视图。现在你最后调用这个方法 - 这是错误的。