Android Studio。 AddRule Null指针异常
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android Studio。 AddRule Null指针异常相关的知识,希望对你有一定的参考价值。
我在android Studio中遇到了addRule函数的问题。我循环一个Array语言列表。对于每种语言,我都添加了Textview。添加1个textview后,下一个Textview应该在第一个Textview下对齐。我在addrule行得到一个NullpointerException。我的设置和获取视图的ID是否错误?抱歉Xml不完整。整个Xml代码位于相对布局中。
private void listLanguages() {
RelativeLayout relativelayout = (RelativeLayout) findViewById(R.id.addrole);
int e;
for (int i=0; i < languages.size(); i++) {
TextView textview = new TextView(AddRole.this);
if (i > 0) {
e = i-1;
RelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams) textview.getLayoutParams();
lp.addRule(RelativeLayout.BELOW,e);
textview.setLayoutParams(lp);
}
textview.setText(languages.get(i));
textview.setId(i);
relativelayout.addView(textview);
}
XML:
<include
layout = "@layout/esnmis"
android:id="@+id/esnmis"
android:layout_width="match_parent"
android:layout_height="55dp">
</include>
<TextView
android:layout_width="250dp"
android:layout_height="wrap_content"
android:inputType="textPersonName"
android:layout_below="@+id/esnmis"
android:textSize="30dp"
android:gravity="center"
android:id="@+id/description"
android:layout_marginTop="4dp"
android:layout_centerHorizontal="true" />
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/description"
android:id="@+id/addrole">
</RelativeLayout>
<Button
android:text=""
android:textSize="20dp"
android:textAllCaps="false"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/insert"
android:layout_below="@+id/addrole"
android:layout_centerHorizontal="true"
android:layout_marginTop="5dp" />
错误:
E / AndroidRuntime:FATAL EXCEPTION:main进程:com.example.obo.database,PID:11262 java.lang.NullPointerException:尝试从空对象引用上的字段'int android.view.ViewGroup $ LayoutParams.width'读取android.view.ViewGroup $ LayoutParams。(ViewGroup.java:7346)在android.view.ViewGroup $ MarginLayoutParams。(ViewGroup.java:7643)的android.widget.RelativeLayout $ LayoutParams。(RelativeLayout.java:1345)at com。 example.obo.database.AddRole.listLanguages(AddRole.java:107)at com.example.obo.database.AddRole.access $ 300(AddRole.java:28)at com.example.obo.database.AddRole $ 1 $ 1.run (AddRole.java:79)android.os.Handler.handleCallback(Handler.java:739)android.os.Handler.dispatchMessage(Handler.java:95)android.os.Looper.loop(Looper.java: 148)在android.app.ActivityThread.main(ActivityThread.java:7331)at java.lang.reflect.Method.invoke(Native Method)at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java: 1230)在com.android.internal.os.ZygoteInit。主(ZygoteInit.java:1120)
感谢shadowsheep和Mike M.我的应用程序工作正常。对于遇到同样问题的其他人来说,这是一个解决方案:
private void listLanguages(){
RelativeLayout relativelayout = (RelativeLayout) findViewById(R.id.addrole);
int e;
for (int i=1; i < languages.size() + 1; i++) {
TextView textview = new TextView(AddRole.this);
if (i > 1) {
e = i-1;
RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
lp.addRule(RelativeLayout.BELOW,e);
textview.setLayoutParams(lp);
}
textview.setText(languages.get(i - 1));
textview.setId(i);
relativelayout.addView(textview);
}
以上是关于Android Studio。 AddRule Null指针异常的主要内容,如果未能解决你的问题,请参考以下文章
类型“StyleSheet”上不存在属性“addRule”和“insertRule”