gpt4 book ai didi

java - 在对话框中动态添加 View

转载 作者:行者123 更新时间:2023-12-02 03:46:08 25 4
gpt4 key购买 nike

我正在尝试制作由 2x EditText 和 1x Button 组成的对话框。通过单击附加按钮,您可以添加另一个 2x EditText 和 1x 按钮。此 1x 按钮提供删除此添加的对。当我尝试使用应该添加另一个 View 的按钮时,它工作正常。但删除 View 的按钮仅适用于第一对。我怎样才能用 android:onClick 做到这一点,因为我试图购买它崩溃了。

这是我的 Dialog 类代码:

public class ExampleDialog extends AppCompatDialogFragment {
private EditText editTextUsername;
private EditText editTextPassword;
private ExampleDialogListener listener;
private LinearLayout parentLinearLayout;
private Context mContext;
Button dodaj,usun;



@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());

LayoutInflater inflater = getActivity().getLayoutInflater();
View view = inflater.inflate(R.layout.dialog_template, null);

builder.setView(view)
.setTitle("Login")
.setNegativeButton("cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {

}
})
.setPositiveButton("ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
String username = editTextUsername.getText().toString();
String password = editTextPassword.getText().toString();
listener.applyTexts(username, password);
}
});

editTextUsername = view.findViewById(R.id.edit_username);
editTextPassword = view.findViewById(R.id.edit_password);
parentLinearLayout = (LinearLayout) view.findViewById(R.id.parent_linear_layout);
dodaj = view.findViewById(R.id.add_field_button);
usun = view.findViewById(R.id.delete_button);

dodaj.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
final View rowView = inflater.inflate(R.layout.field, null);
// Add the new row before the add field button.
parentLinearLayout.addView(rowView, parentLinearLayout.getChildCount() - 1);
}
});

usun.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
parentLinearLayout.removeView((View) v.getParent());
usun = v.findViewById(R.id.delete_button);
}
});

return builder.create();
}

@Override
public void onAttach(Context context) {
super.onAttach(context);
try {
listener = (ExampleDialogListener) context;

} catch (ClassCastException e) {
throw new ClassCastException(context.toString() +
"must implement ExampleDialogListener");
}
}

public void contexta(Context context)
{
this.mContext = context;
}

public interface ExampleDialogListener {
void applyTexts(String username, String password);
}

}

下图中有对话框的概念: Picture

最佳答案

此问题可能是由于 View 引用造成的。检查 v.getParent() 是否是您要删除的 View 。

为了进行测试,您可以使用“removeViewAt(int index)”方法。传递一个索引并检查 View 是否在索引处被删除。

关于java - 在对话框中动态添加 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56806200/

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