为了账号安全,请及时绑定邮箱和手机立即绑定

Android textView.setText() 抛出异常

Android textView.setText() 抛出异常

慕运维8079593 2022-06-23 15:42:24
我正在尝试创建一个应用程序,我可以在其中放置多次相同类型的布局LinearLayout。布局只有一个TextView,我正在尝试使用setText,但这行代码似乎不起作用。我不知道我必须添加多少布局,LinearLayout因为这取决于用户将有多少无人机(我有一个布局/无人机)上传到应用程序,所以我创建了一个函数来读取文本以放入TextView从 aSharedPreference中读取另一个中的无人机数量(因此是布局数量)SharedPreferences。我TextView输入的字符串来自一个名为dronelayoutmain 的布局。我尝试在 中仅发送“测试” setText,但它还是崩溃了,所以我认为 android 就是找不到我的TextView,但我真的不知道为什么。所以这是我调用的函数OnCreate,它应该为我拥有的每架无人机添加一个布局    public void affichagedrone(){    LinearLayout mlineairelayout = (LinearLayout)     findViewById(R.id.lineaireLayout);    LinearLayout.LayoutParams params = new     LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,     LinearLayout.LayoutParams.WRAP_CONTENT);    Context mContext;    mContext = getApplicationContext();    LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);    SharedPreferences droneprefs = mContext.getSharedPreferences("dronepref", MODE_PRIVATE);    SharedPreferences applimaindata = mContext.getSharedPreferences("applimaindata", MODE_PRIVATE);    int nbdrone = applimaindata.getInt(String.valueOf(emplacementNbDrone),1);    String string;    TextView textViewnomConstructeurDrone;    if (nbdrone !=0) {        for(int i=0;i<nbdrone;i++) {            textViewnomConstructeurDrone = (TextView) findViewById(R.id.textViewNomConstructeur);            string = droneprefs.getString(String.valueOf(i),"Fail");            textViewnomConstructeurDrone.setText(string);            final View rowView = inflater.inflate(R.layout.dronelayoutmain, null);            // Add the new row before the add field button.            mlineairelayout.addView(rowView);        }    }}这是我试图放入的布局LinearLayout。<?xml version="1.0" encoding="utf-8"?><android.support.constraint.ConstraintLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"android:layout_width="match_parent"android:layout_height="120dp">该函数应该在applimaindata中检查要添加的布局数量,然后在for()中,应该TextView从droneprefs文件中设置文本,然后将布局添加到主LinearLayout
查看完整描述

1 回答

?
白板的微信

TA贡献1883条经验 获得超3个赞

如果这个TextView属于新膨胀的布局,一定要在布局膨胀后才能找到:


for(int i = 0; i < nbdrone; i++) {

    final View rowView = inflater.inflate(R.layout.dronelayoutmain, null);

    textViewnomConstructeurDrone = rowView.findViewById(R.id.textViewNomConstructeur);

    string = droneprefs.getString(String.valueOf(i),"Fail");

    textViewnomConstructeurDrone.setText(string);

    mlineairelayout.addView(rowView);

}


查看完整回答
反对 回复 2022-06-23
  • 1 回答
  • 0 关注
  • 127 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信