Android textView.setText()使应用程序崩溃

时间:2019-02-16 15:19:08

标签: java android

我正在尝试创建一个应用,可以在LinearLayout中多次放置相同类型的布局。 布局只有一个textview,我正在尝试使用setText,但是这一行代码使应用程序崩溃。 我不知道我必须添加到LinearLayout多少布局,因为它取决于用户将要上传到应用程序的无人机(我有一个布局/无人机),所以我做了一个读取文本的函数从SharedPreference读取TextView,并读取另一个SharedPreferences中的无人机数量(即布局数量)。

我要输入字符串的TextView来自名为dronelayoutmain的布局。 我尝试在setText中发送“ test”,但是无论如何它都会崩溃,所以我认为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.ConstraintLayout
xmlns: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"
>

<TextView
    android:id="@+id/textViewNomConstructeur"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="5dp"
    android:layout_marginLeft="5dp"
    android:layout_marginTop="5dp"
    android:text="@string/adddrone"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

</android.support.constraint.ConstraintLayout>

该函数应在applimaindata中检入要添加的布局数量,然后在for()中,应从droneprefs文件设置TextView的Text,然后将Layout添加到主linearlayout < / p>

1 个答案:

答案 0 :(得分:0)

如果此TextView属于新扩展的布局,则必须在扩展该布局后找到它:

dependencies {
  compile 'com.android.support:multidex:1.0.3'
}