У меня есть следующий код, который создает некоторые представления динамически:NullPointerException - не могу понять, что нулевой
for (int i = 0; i < z; i++) {
LayoutInflater vi = (LayoutInflater) getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View v = vi.inflate(R.layout.tag_table_row, null); //this is the template for each view
// set xyz dynamically
TextView textView = (TextView) v.findViewById(R.id.xyz); //id within the layout
textView.setText(xyz[i]);
//set score dynamically
TextView textView2 = (TextView) v.findViewById(R.id.score);
textView2.setText(scores[i]);
//set bar graph dynamically
TagBar tagBar = (TagBar) findViewById(R.id.tagbar);
double tag1score = Double.parseDouble(scores[i]);
Log.i("score", scores[i]);
double factor = 250;
double len = tag1score*factor;
int length = (int) len;
Log.i("length", Integer.toString(length));
tagBar.setBarLength(length);
// insert into main view
View insertPoint = findViewById(R.id.tagTable);
((ViewGroup) insertPoint).addView(v, i, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT));
}
TagBar
класс я создал, что в основном рисует горизонтальную полосу длиной, которая определяется "Гол". Весь этот код работает нормально, за исключением строки tagBar.setBarLength(length);
. Когда эта строка работает, я получаю NullPointerException
, и приложение выходит из строя.
Насколько я знаю, length
определен и не равно нулю, tagBar
определен и не равно нулю, а метод setBarLength()
определяется в TagBar
классе. Почему я получаю NullPointerException`?
setBarLength()
определяется в TagBar
класс следующим образом:
public void setBarLength(int n) {
barLeng = n;
invalidate();
requestLayout();
}
Вот мой Logcat:
07-20 12:33:52.029: E/AndroidRuntime(8075): FATAL EXCEPTION: main
07-20 12:33:52.029: E/AndroidRuntime(8075): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.tforan.blobtag4/com.tforan.blobtag4.PlaceActivity}: java.lang.NullPointerException
07-20 12:33:52.029: E/AndroidRuntime(8075): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1852)
07-20 12:33:52.029: E/AndroidRuntime(8075): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1873)
07-20 12:33:52.029: E/AndroidRuntime(8075): at android.app.ActivityThread.access$1500(ActivityThread.java:135)
07-20 12:33:52.029: E/AndroidRuntime(8075): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1054)
07-20 12:33:52.029: E/AndroidRuntime(8075): at android.os.Handler.dispatchMessage(Handler.java:99)
07-20 12:33:52.029: E/AndroidRuntime(8075): at android.os.Looper.loop(Looper.java:150)
07-20 12:33:52.029: E/AndroidRuntime(8075): at android.app.ActivityThread.main(ActivityThread.java:4358)
07-20 12:33:52.029: E/AndroidRuntime(8075): at java.lang.reflect.Method.invokeNative(Native Method)
07-20 12:33:52.029: E/AndroidRuntime(8075): at java.lang.reflect.Method.invoke(Method.java:507)
07-20 12:33:52.029: E/AndroidRuntime(8075): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:849)
07-20 12:33:52.029: E/AndroidRuntime(8075): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:607)
07-20 12:33:52.029: E/AndroidRuntime(8075): at dalvik.system.NativeStart.main(Native Method)
07-20 12:33:52.029: E/AndroidRuntime(8075): Caused by: java.lang.NullPointerException
07-20 12:33:52.029: E/AndroidRuntime(8075): at com.tforan.blobtag4.PlaceActivity.onCreate(PlaceActivity.java:169)
07-20 12:33:52.029: E/AndroidRuntime(8075): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1072)
07-20 12:33:52.029: E/AndroidRuntime(8075): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1816)
07-20 12:33:52.029: E/AndroidRuntime(8075): ... 11 more
Любая помощь будет принята с благодарностью. Благодаря!
Не могли бы вы добавить больше своего кода? Возможно, весь ваш метод onCreate. Это происходит внутри onCreate, но ваш оператор for не содержит достаточно кода для отладки проблемы. – Gatekeeper