gpt4 book ai didi

android - 在 DialogFragment 中使用适配器时不显示软键盘

转载 作者:太空宇宙 更新时间:2023-11-03 12:35:22 24 4
gpt4 key购买 nike

我有一个自定义 DialogFragment,其中有一个 ArrayAdapter,其中有一些 editText。当显示对话框时,即使我按下编辑文本,软键盘也不会出现。编辑文本确实获得了焦点,但键盘从未出现。

如果我不使用适配器而只使用带有编辑文本的 View ,它会完美地工作,但一旦我添加适配器,我就会遇到问题。

我的代码如下。非常感谢任何帮助。

提前致谢。

public class ParameterDialog extends DialogFragment {
Context context;

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {

ArrayList<Parameter> params = this.getArguments().getParcelableArrayList(MainActivity.KEY_PARAMS_TO_DIALOG);
String name = this.getArguments().getString(MainActivity.KEY_NAME_TO_DIALOG);

context = getActivity();
// Use the Builder class for convenient dialog construction
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());

ParameterDialogAdapter pda = new ParameterDialogAdapter(context,R.layout.parameter_config_string , params);

// Inflate and set the layout for the dialog
// Pass null as the parent view because its going in the dialog layout
builder
.setTitle(name)
.setAdapter(pda,null)
.setPositiveButton("Send", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
}
})
.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
}
});

// Create the AlertDialog object and return it
return builder.create();
}}

-

public class ParameterDialogAdapter extends ArrayAdapter<Parameter> {

Context context;
int layoutResourceId;
ArrayList<Parameter> data= null;

public ParameterDialogAdapter(Context context, int layoutResourceId, ArrayList<Parameter> data) {
super(context, layoutResourceId, data);
this.layoutResourceId = layoutResourceId;
this.context = context;
this.data = data;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {

View row = convertView;
//ParameterHolder holder = null;
final LayoutInflater inflater = ((Activity)context).getLayoutInflater();
final int p =position;
row = inflater.inflate(layoutResourceId, parent, false);
return row;
}}

-布局

<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/paramValueHolder"
android:paddingRight="10dp"
android:paddingLeft="10dp"
android:paddingBottom="5dp">

<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/paramValue"
android:hint="Value"
android:textColor="@color/text_grey" />

-显示对话框的代码

ParameterDialog pDialog = new ParameterDialog ();

Bundle bundle = new Bundle();
bundle.putString(KEY_NAME_TO_DIALOG,action.getName());
bundle.putParcelableArrayList(KEY_PARAMS_TO_DIALOG, params);
pDialog.setArguments(bundle);

pDialog.setArguments(bundle);
pDialog.show(ft, "parameter_dialog");

最佳答案

我在使用包含 ListViewFragmentDialog 时遇到了类似的问题。 ListView 中的项目包含未调出软键盘的 EditText 小部件。

我发现的解决方法是在 FragmentDialog 的根布局中放置一个不可见的 EditText

例如:

list_layout.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">

<ListView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:id="@android:id/list"/>

<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="gone" />
</LinearLayout>

DialogFragment 创建如下 View :

@Override
public Dialog onCreateDialog(Bundle savedInstanceState)
{
LayoutInflater inflater = getActivity().getLayoutInflater();
View listLayout = inflater.inflate(R.layout.list_layout, null);
mListView = (ListView) listLayout.findViewById(android.R.id.list);
return new AlertDialog.Builder(getActivity()).setView(listLayout).create();
}

@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState)
{
super.onActivityCreated(savedInstanceState);
//set adapter
mListView.setAdapter(mListAdapter);
}

希望对你有帮助

关于android - 在 DialogFragment 中使用适配器时不显示软键盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21250931/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com