代码之家  ›  专栏  ›  技术社区  ›  Prabakaran Rengasamy

有人看到这个吗?你能帮我吗?错误:-android.widget。LinearLayout不能强制转换为android.widget。文本视图-

  •  0
  • Prabakaran Rengasamy  · 技术社区  · 1 年前

    XML设计代码:

    无法启动活动ComponentInfo{com.example.app/com.example.app.MainPermission}:java.lang.ClassCastException:android.widget。LinearLayout不能强制转换为android.widget。文本框 我试图纠正,但我对那个代码感到困惑。

          ''' <?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();
                    }
                });
            }
        }'''
    
    1 回复  |  直到 1 年前
        1
  •  0
  •   sweak    1 年前

    您正试图分配 LinearLayout TextView 所有物那是因为例如id txt_date 被分配给 LinearLayout 在xml中:

    <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;