LayoutInflater в android не может добавить ребенка программно? - PullRequest
0 голосов
/ 09 мая 2020

У меня есть LinearLayout, и я хочу добавить свой новый программно добавленный CardView внутри него как дочерний элемент, используя LayoutInflater

    llMain = (LinearLayout)findViewById(R.id.llMain);
    LayoutInflater inflater = getLayoutInflater();
    Bundle extras = getIntent().getExtras();
    if (extras != null) {
        final TextView tvAdded = new TextView(this);
        CardView cvAdded = new CardView(this);

        tvAdded.setTextSize(18);
        tvAdded.setTextColor(Color.BLACK);
        tvAdded.setClickable(true);
        tvAdded.setPadding(0, 10, 0, 0);
        tvAdded.setGravity(Gravity.CENTER);
        String value = extras.getString("etTest");
        tvAdded.setText(value);

        cvAdded  = (CardView) inflater.inflate((XmlPullParser) llMain, cvAdded, false);
        cvAdded.addView(tvAdded);
        cvAdded.setLayoutParams(new CardView.LayoutParams(CardView.LayoutParams.MATCH_PARENT, CardView.LayoutParams.MATCH_PARENT));

        llMain.addView(cvAdded);
    }

Результат, который я хочу должно быть CardView показывает ширину и высоту родительского элемента совпадения, то есть llMain, но проблема в том, что когда я его запускаю, приложение вылетает из строя. Это журнал кра sh

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.wordpress.fidzsoftware/com.wordpress.fidzsoftware.MainActivity}: java.lang.ClassCastException: android.widget.LinearLayout cannot be cast to org.xmlpull.v1.XmlPullParser
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2695)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2769)
    at android.app.ActivityThread.access$900(ActivityThread.java:177)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1430)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:135)
    at android.app.ActivityThread.main(ActivityThread.java:5910)
    at java.lang.reflect.Method.invoke(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:372)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1405)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1200)
 Caused by: java.lang.ClassCastException: android.widget.LinearLayout cannot be cast to org.xmlpull.v1.XmlPullParser
    at com.wordpress.fidzsoftware.MainActivity.onCreate(MainActivity.java:50)
    at android.app.Activity.performCreate(Activity.java:6178)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2648)

1 Ответ

0 голосов
/ 09 мая 2020

Измените эту строку:

cvAdded  = (CardView) inflater.inflate((XmlPullParser) llMain, cvAdded, false);

На это:

cvAdded  = (CardView) inflater.inflate(llMain, cvAdded, false);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...