Android Studio。 AddRule Null指针异常

问题描述 投票:0回答:1

我在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)

android loops android-studio nullpointerexception
1个回答
0
投票

感谢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);

}

© www.soinside.com 2019 - 2024. All rights reserved.