我有自定义布局:
taskview.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent">
<ListView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/listView"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
</RelativeLayout>
我的活动如下:
DaysList.java
public class DaysList extends Activity {
String []data= {"Wake up", "Take a shit", "Bath", "Feed your belly"};
ListView listView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void showTask(View view){
listView= (ListView)findViewById(R.id.listView);
ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,R.layout.task_row, R.id.textView, data);
listView.setAdapter(adapter);
}
}
showTask 是一个侦听器函数,它侦听onClick事件。我不知道为什么我得到 findViewById(R.id.listview)的NullPointerException。
顺便说一下,我是Android的新手,这就是为什么我不确定我是否遗漏了某些东西。
修改: 我有2个布局,activity_main.xml有一些按钮。每当有人点击那些按钮时,就会调用showTask方法。
DaysList是与activity_main.xml相关联的活动,因为它是我应用程序的第一页。这就是我无法使用taskview.xml更改它的原因。
activity_main.xml中
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:background="#F44336"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context=".DaysList">
<ImageView
android:id="@+id/mon"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:layout_marginRight="5sp"
android:src="@drawable/mon"
android:adjustViewBounds="true"
/>
<TextView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="3"
android:background="#F44336"
android:fontFamily="sans-serif"
android:paddingBottom="15sp"
android:paddingTop="15sp"
android:paddingLeft="25sp"
android:text="Monday"
android:textColor="#E8F5E9"
android:textSize="34sp"
android:onClick="showTask"/>
</LinearLayout>
Thanks!!
答案 0 :(得分:2)
setContentView(R.layout.activity_main);
到
setContentView(R.layout.taskview);
因为您设置了错误的xml文件。并在onCreate
方法
答案 1 :(得分:2)
在onCreate方法中获取listView,并且还没有调用showTask
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView= (ListView)findViewById(R.id.listView);
showTask();
}
并从showTask方法中删除它
答案 2 :(得分:0)
试试这个,
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.taskview);
listView= (ListView)findViewById(R.id.listView);
}
答案 3 :(得分:0)
您的Listview位于taskview.xml
因此请使用setContentView(R.layout.taskview);
答案 4 :(得分:0)
使用showTask方法中给出的view参数来查找您的id 像这样的东西
listView= (ListView)view.findViewById(R.id.listView);