Я пытаюсь создать TableLayout в Android Studio.В данный момент я помещаю таблицу на панель инструментов приложения и перехожу к действию, а не к фрагменту.
При запуске приложения я получаю исключение нулевого указателя при попытке что-либо сделать стаблица.
Я пытался очистить и перестроить проект, а также перезапустить Android Studio, но безрезультатно.Я посмотрел на некоторые другие вопросы о SO, откуда я изначально получил код, но я не могу найти никого, у которого есть такая же ошибка.
В качестве другого вопроса, мне лучше создать это в новомфрагмент вместо того, чтобы прямо к деятельности?
Вот файл макета XML
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/dashboard_table"
android:layout_gravity="center">
</TableLayout>
А вот класс Java
public void drawDashboard(){
table = (TableLayout) findViewById(R.id.dashboard_table);
table.setStretchAllColumns(true);
for(int i = 0; i < classModuleList.size(); i++){
TableRow row = new TableRow(this);
TableRow.LayoutParams layout = new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT);
row.setLayoutParams(layout);
TextView classText = new TextView(this);
row.addView(classText);
TextView moduleText = new TextView(this);
row.addView(moduleText);
ImageView isComplete = new ImageView(this);
for(Map.Entry<String, Boolean> entry : moduleCompleteList.entrySet()){
if(entry.getKey().equals(classModuleList.get(i))){
if(moduleCompleteList.get(i) == true){
isComplete.setBackgroundResource(R.drawable.icon_complete);
} else {
isComplete.setBackgroundResource(R.drawable.icon_white_not_started);
}
}
}
row.addView(isComplete);
table.addView(row, i);
}
А вот и ошибка
java.lang.RuntimeException: Unable to start activity ComponentInfo{teamingenium.ingeniummobileapplication/teamingenium.ingeniummobileapplication.activities.DashboardActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TableLayout.addView(android.view.View, int)' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2913)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6669)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TableLayout.addView(android.view.View, int)' on a null object reference
at teamingenium.ingeniummobileapplication.activities.DashboardActivity.drawDashboard(DashboardActivity.java:201)
at teamingenium.ingeniummobileapplication.activities.DashboardActivity.onCreate(DashboardActivity.java:77)
performCreate(icicle, null);