有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java为什么在片段对话框中ListView总是空的

对话框正确显示,但listview始终为空。 以下是我启动活动时得到的信息 enter image description here

public class MainFragment extends Fragment {
    String[] cities = {"Tanger", "Meknes", "Casablanca",
            "Fes", "Tetouan", "Taza", "Rabat"};
    Dialog dialog;
  
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        TextView currentCity = view.findViewById(R.id.city);
        currentCity.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                dialog = new Dialog(getContext());
                dialog.setContentView(R.layout.dialog_searchable_spinner);
                dialog.getWindow().setLayout(800, 1000);
                View spinnerView = getLayoutInflater().inflate(R.layout.dialog_searchable_spinner, container, false);
                dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
                dialog.show();
                EditText searchTextView = spinnerView.findViewById(R.id.editText);
                ListView citiesListView = spinnerView.findViewById(R.id.citiesListView);
                ArrayAdapter<String> adapter = new ArrayAdapter<>(getActivity(), 安卓.R.layout.simple_list_item_1, cities);
                citiesListView.setAdapter(adapter);
}

共 (2) 个答案

  1. # 1 楼答案

    对话框布局:

    <?xml version="1.0" encoding="utf-8"?>
    <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@drawable/alert_dialog"
        android:padding="16dp"
        android:orientation="vertical"
        android:gravity="center">
    
    
        <TextView
            android:id="@+id/textView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="البحث عن المدينة"
            android:textSize="25sp"
            android:textColor="@color/primaryColor"
            android:fontFamily="@font/alhurra"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />
    
        <EditText
            android:id="@+id/editText"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:background="@android:drawable/editbox_background"
            android:hint="إسم المدينة..."
            android:fontFamily="@font/aj_bold"
            android:textDirection="rtl"
            android:layoutDirection="rtl"
            android:padding="10dp"
            android:singleLine="true"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/textView" />
    
        <ListView
            android:id="@+id/citiesListView"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_marginTop="5dp"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/editText"
            tools:layout_editor_absoluteX="16dp" />
    
    
    
    </androidx.constraintlayout.widget.ConstraintLayout>
    

    碎片布局

    <?xml version="1.0" encoding="utf-8"?>
    <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@drawable/activitybackground"
        tools:context=".MainFragment">
    
    
                <TextView
                    android:id="@+id/city"
                    android:layout_width="120dp"
                    android:layout_height="wrap_content"
                    android:layout_margin="5dp"
                    android:layout_weight="1"
                    android:fontFamily="@font/alhurra"
                    android:gravity="center"
                    android:text="مكنـاس"
                    android:textColor="@color/primaryColor"
                    android:textSize="20sp" />
    
    </androidx.constraintlayout.widget.ConstraintLayout>
    
  2. # 2 楼答案

    你的布局有问题ConstraintLayout以某种方式隐藏了listview。您必须对布局文件进行一些更改。例如,我使用LinearLayout就可以做到这一点

            Dialog dialog;
            dialog = new Dialog(this);
            dialog.setContentView(R.layout.dialog_searchable_spinner);
            dialog.getWindow().setLayout(800, 1000);
            //View spinnerView = getLayoutInflater().inflate(R.layout.dialog_searchable_spinner,binding.getRoot());
            //dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
    
            ListView citiesListView = dialog.findViewById(R.id.citiesListView);
            ArrayAdapter<String> adapter = new ArrayAdapter<>(getApplicationContext(), android.R.layout.simple_list_item_1, cities);
            citiesListView.setAdapter(adapter);
            dialog.show();
    

    ==

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:padding="16dp"
        android:orientation="vertical"
        android:gravity="center">
    
    
        <TextView
            android:id="@+id/textView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="البحث عن المدينة"
            android:textSize="25sp"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />
    
        <EditText
            android:id="@+id/editText"
            android:layout_below="@id/textView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:background="@android:drawable/editbox_background"
            android:hint="إسم المدينة..."
            android:textDirection="rtl"
            android:layoutDirection="rtl"
            android:padding="10dp"
            android:singleLine="true"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/textView" />
    
        <ListView
            android:id="@+id/citiesListView"
            android:layout_below="@id/editText"
            android:layout_width="match_parent"
            android:layout_height="400dp"
            android:layout_marginTop="5dp"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/editText"
            tools:layout_editor_absoluteX="16dp" />
    
    
    
    </RelativeLayout>