У меня есть пользовательский макет:Android: findViewById (R.id.listView) возвращает нуль
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. Я не знаю, почему я получаю исключение NullPointerException для findViewById (R.id.listview).
Btw, я новичок в Android, поэтому я не уверен, что я чего-то не хватает или нет.
EDIT: У меня есть 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!!
Почему вы тратите свое время, дорогая. Просто посмотрите, что ваш 'activity_main' xml имеет' listview' ?? Вы определили неправильный 'XML', измените свой xml с помощью' taskview.xml' –
Вы должны установить R.layout.taskview в onCreate, поскольку listview находится в этом XML-файле –