有人看到这个吗?你能帮我吗?错误:- android.widget.LinearLayout 无法转换为 android.widget.TextView -

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

XML设计代码:

无法启动 Activity ComponentInfo{com.example.app/com.example.app.MainPermission}:java.lang.ClassCastException:android.widget.LinearLayout 无法转换为 android.widget.TextView 我尝试纠正,但我对该代码感到困惑。

      ''' <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        tools:context=".MainPermission">
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">
    
            <androidx.appcompat.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="50dp"
                android:background="#701198">
    
                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:orientation="horizontal">
    
                    <ImageView
                        android:layout_width="20dp"
                        android:layout_height="20dp"
                        android:src="@drawable/sym" />
    
                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginLeft="10dp"
                        android:text="Apply Permission"
                        android:textColor="@color/white" />
                </LinearLayout>
    
                <LinearLayout
                    android:layout_width="wrap_content"
                    android:layout_height="match_parent"
                    android:orientation="horizontal">
    
                    <ImageView
                        android:id="@+id/icon_id"
                        android:layout_width="wrap_content"
                        android:layout_height="15dp"
                        android:src="@drawable/sym" />
    
                    <TextView
                        android:id="@+id/txt_apply"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginLeft="10dp"
                        android:text="Apply Permission"
                        android:textColor="@android:color/white" />
                </LinearLayout>
            </androidx.appcompat.widget.Toolbar>
        </LinearLayout>
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_marginLeft="10dp"
            android:layout_marginTop="10dp"
            android:layout_marginRight="10dp"
            android:orientation="vertical">
    
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:weightSum="3">
    
                <LinearLayout
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginRight="5dp"
                    android:layout_weight="1"
                    android:orientation="vertical">
    
                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="Date" />
    
                    <LinearLayout
                        android:id="@+id/txt_date"
                        android:layout_width="match_parent"
                        android:layout_height="30dp"
                        android:background="@drawable/border"
                        tools:ignore="ExtraText">
    
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_gravity="center"
                            android:paddingStart="10dp"
                            android:text="Enter date" />
    
                        <ImageView
                            android:layout_width="20dp"
                            android:layout_height="20dp"
                            android:layout_marginLeft="10dp"
                            android:layout_marginTop="5dp"
                            android:src="@drawable/atendance" />
                    </LinearLayout>
                </LinearLayout>
    
                <LinearLayout
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginRight="3dp"
                    android:layout_weight="1"
                    android:orientation="vertical">
    
                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="From  time">
    
                    </TextView>
    
                    <LinearLayout
                        android:id="@+id/txt_from_time"
                        android:layout_width="match_parent"
                        android:layout_height="30dp"
                        android:background="@drawable/border"
                        tools:ignore="DuplicateIds">
    
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_gravity="center"
                            android:paddingStart="10dp"
                            android:text="Enter time" />
    
                        <ImageView
                            android:layout_width="25dp"
                            android:layout_height="20dp"
                            android:layout_marginLeft="10dp"
                            android:layout_marginTop="5dp"
                            android:src="@drawable/time"></ImageView>
                    </LinearLayout>
                </LinearLayout>
    
                <LinearLayout
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginRight="5dp"
                    android:layout_weight="1"
                    android:orientation="vertical">
    
                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="To Time"></TextView>
    
                    <LinearLayout
    
                        android:id="@+id/txt_to_time"
                        android:layout_width="match_parent"
                        android:layout_height="30dp"
                        android:background="@drawable/border">
    
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_gravity="center"
                            android:paddingStart="10dp"
                            android:text="Enter time"></TextView>
    
                        <ImageView
                            android:layout_width="25dp"
                            android:layout_height="20dp"
                            android:layout_marginLeft="10dp"
                            android:layout_marginTop="5dp"
                            android:src="@drawable/time"></ImageView>
                    </LinearLayout>
                </LinearLayout>
            </LinearLayout>
    
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="10dp"
                android:orientation="horizontal">
    
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Total Hours Taken" />
    
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="10dp"
                    android:text="0 Hrs"
                    android:textColor="@color/black"
                    android:textStyle="bold" />
            </LinearLayout>
    
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="10dp"
                android:orientation="vertical">
    
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text=" Description" />
    
                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="200dp"
                    android:layout_marginTop="10dp" />
            </LinearLayout>
        </LinearLayout>
    </LinearLayout>'''

     Activity Class:

我尝试纠正,但我对该代码感到困惑。

    '''import androidx.appcompat.app.AppCompatActivity;
   
    public class MainPermission extends AppCompatActivity {
    
        TextView Date_view, TxtFromTime, TxtToTime;
    
        @SuppressLint("WrongViewCast")
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main_permission);
            getSupportActionBar().hide();
    
            Date_view = findViewById(R.id.txt_date);
            TxtFromTime = findViewById(R.id.txt_from_time);
            TxtToTime = findViewById(R.id.txt_to_time);
    
            Date_view.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    final Calendar calendar = Calendar.getInstance();
                    int year = calendar.get(Calendar.YEAR);
                    int month = calendar.get(Calendar.MONTH);
                    int day = calendar.get(Calendar.DAY_OF_MONTH);
    
                    DatePickerDialog datePickerDialog = new DatePickerDialog(MainPermission.this, new DatePickerDialog.OnDateSetListener() {
                        @Override
                        public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
                            calendar.set(year, monthOfYear, dayOfMonth);
                            SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy", Locale.getDefault());
                            String selectedDate = sdf.format(calendar.getTime());
                            Date_view.setText(selectedDate);
                        }
                    }, year, month, day);
    
                    datePickerDialog.show();
                }
            });
    
            TxtFromTime.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    final Calendar calendar = Calendar.getInstance();
                    int hour = calendar.get(Calendar.HOUR_OF_DAY);
                    int minute = calendar.get(Calendar.MINUTE);
    
                    TimePickerDialog timePickerDialog = new TimePickerDialog(MainPermission.this,
                            new TimePickerDialog.OnTimeSetListener() {
                                @Override
                                public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
                                    calendar.set(Calendar.HOUR_OF_DAY, hourOfDay);
                                    calendar.set(Calendar.MINUTE, minute);
    
                                    SimpleDateFormat sdf = new SimpleDateFormat("HH:mm", Locale.getDefault());
                                    String selectedTime = sdf.format(calendar.getTime());
                                    TxtFromTime.setText(selectedTime);
                                }
                            }, hour, minute, true);
    
                    timePickerDialog.show();
                }
            });
    
            TxtToTime.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    final Calendar calendar = Calendar.getInstance();
                    int hour = calendar.get(Calendar.HOUR_OF_DAY);
                    int minute = calendar.get(Calendar.MINUTE);
    
                    TimePickerDialog timePickerDialog = new TimePickerDialog(MainPermission.this,
                            new TimePickerDialog.OnTimeSetListener() {
                                @Override
                                public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
                                    calendar.set(Calendar.HOUR_OF_DAY, hourOfDay);
                                    calendar.set(Calendar.MINUTE, minute);
    
                                    SimpleDateFormat sdf = new SimpleDateFormat("HH:mm", Locale.getDefault());
                                    String selectedTime = sdf.format(calendar.getTime());
                                    TxtToTime.setText(selectedTime);
                                }
                            }, hour, minute, true);
    
                    timePickerDialog.show();
                }
            });
        }
    }'''
android xml
1个回答
0
投票

您正在尝试将

LinearLayout
分配给
TextView
属性。那是因为例如id
txt_date
被分配给 xml 中的
LinearLayout

<LinearLayout
    android:id="@+id/txt_date"

在这种情况下,您拥有的代码:

TextView Date_view, TxtFromTime, TxtToTime;

...

Date_view = findViewById(R.id.txt_date);
TxtFromTime = findViewById(R.id.txt_from_time);
TxtToTime = findViewById(R.id.txt_to_time);

几乎相当于这个:

// You can't cast LinearLayout to TextView - this code is wrong:
TextView Date_view = (LinearLayout) findViewById(R.id.txt_date);
TextView TxtFromTime = (LinearLayout) findViewById(R.id.txt_from_time);
TextView TxtToTime = (LinearLayout) findViewById(R.id.txt_to_time);

我希望你现在明白问题出在哪里。

此问题的快速解决方法是更改此行:

TextView Date_view, TxtFromTime, TxtToTime;

到这一行:

LinearLayout Date_view, TxtFromTime, TxtToTime;
© www.soinside.com 2019 - 2024. All rights reserved.