PDA

View Full Version : AlertDialog شخصی سازی شده و دریافت اطلاعات



nassim_20
دوشنبه 11 آذر 1398, 11:58 صبح
یه AlertDialog دارم که یه لایه براش طراحی کردم که فقط یه EditText داره می خوام با زدن دکمه تایید محتویات EditText رو بگیرم
کدش رو به این صورت نوشتم اما موقع اجرا کرش میکنه

private void runAlert() {

LayoutInflater aInflater = getActivity().getLayoutInflater();
final View dialogView =aInflater.inflate(R.layout.custom_dialog_mojodi, null);

new AlertDialog.Builder(getActivity())
.setTitle("افزایش موجودی")
.setCancelable(false)
.setView(dialogView )
.setPositiveButton("تایید", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
final EditText Increase = dialogView.findViewById(R.id.Increase);

Increase = Increase.getText().toString();
Toast.makeText(getActivity(),Increase.getText().to String();, Toast.LENGTH_SHORT).show();

}

})

.setNegativeButton("نیازی نیست" ,null)
.create()
.show();

}

mehdi.safavie
سه شنبه 22 بهمن 1398, 09:24 صبح
درود;

ساخت یک نمونه دیالوگ شخصی:
dialog_add_contact.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="320dp"
android:layout_height="wrap_content"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_gravity="center"
android:layoutDirection="rtl"
android:textDirection="rtl"
android:background="@android:color/transparent">


<android.support.v7.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/cardViewMain"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardCornerRadius="10dp"
card_view:cardElevation="6dp"
clickable="true">


<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layoutDirection="rtl"
android:textDirection="rtl"
android:orientation="vertical"
android:layout_marginRight="6dp"
android:layout_marginLeft="6dp"
android:layout_marginTop="3dp">


<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">


<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:layout_marginRight="6dp">


<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="horizontal"
android:gravity="center">


<EditText
android:id="@+id/txtName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@style/EditText.Normal"
android:hint="نام و نام خانوادگی"
android:layout_weight="1"/>


<RelativeLayout
android:layout_width="match_parent"
android:layout_height="30dp"
android:layout_weight="1.5">


<Spinner
android:id="@+id/spinRole"
android:layout_width="match_parent"
android:layout_height="30dp"
android:layout_gravity="center"
android:layout_marginRight="6dp"
style="@style/Spinner.Normal"/>


<EditText
android:id="@+id/txtRole"
android:layout_width="match_parent"
android:layout_height="30dp"
android:visibility="gone"
android:hint="نقش"
style="@style/EditText.Normal"/>


</RelativeLayout>


</LinearLayout>


<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:layout_marginTop=" 6dp"
android:orientation="horizontal"
android:gravity="center">


<EditText
android:id="@+id/txtInfo"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@style/EditText.Phone"
android:hint="شماره را وارد کنید"
android:layout_weight="1"/>


<RelativeLayout
android:layout_width="match_parent"
android:layout_height="30dp"
android:layout_weight="1.5">


<Spinner
android:id="@+id/spinType"
android:layout_width="match_parent"
android:layout_height="30dp"
android:layout_gravity="center"
android:layout_marginRight="6dp"
style="@style/Spinner.Normal"/>


<EditText
android:id="@+id/txtType"
android:layout_width="match_parent"
android:layout_height="30dp"
android:visibility="gone"
android:hint="دیگر"
style="@style/EditText.Normal"/>


</RelativeLayout>


</LinearLayout>


</LinearLayout>


</LinearLayout>


<include
android:layout_width="match_parent"
android:layout_height="wrap_content"
layout="@layout/dialog_item_yes_no"/>


</LinearLayout>


</android.support.v7.widget.CardView>


</android.support.constraint.ConstraintLayout>



final Dialog cDialog;
cDialog = new Dialog(context);
cDialog.requestWindowFeature(Window.FEATURE_NO_TIT LE);
cDialog.setCancelable(true);
cDialog.setCanceledOnTouchOutside(true);
cDialog.setContentView(R.layout.dialog_add_contact );
Objects.requireNonNull(cDialog.getWindow()).setBac kgroundDrawableResource(android.R.color.transparen t);


TextView lblAccept = cDialog.findViewById(R.id.lblAccept);
TextView lblCancell = cDialog.findViewById(R.id.lblCancell);
final EditText txtName = cDialog.findViewById(R.id.txtName);
final EditText txtInfo = cDialog.findViewById(R.id.txtInfo);
final Spinner spinRole = cDialog.findViewById(R.id.spinRole);
final Spinner spinType = cDialog.findViewById(R.id.spinType);


// Typeface tf = Typeface.createFromAsset(context.getAssets(), "fonts/ir_sans.ttf");
// txtName.setTypeface(tf);
// txtInfo.setTypeface(tf);


List<Basic_PersonRoles> lPersonRoles = new ArrayList<>();
List<Basic_ContactTypes> lContactType = new ArrayList<>();
lPersonRoles = geter.getList(Basic_PersonRoles.class);
lContactType = geter.getList(Basic_ContactTypes.class);
spinAdapRole = new SpinAdapter(context, lPersonRoles, "PersonRoleTitle");
spinAdapType = new SpinAdapter(context, lContactType, "ContactTypeTitle");
spinRole.setAdapter(spinAdapRole);
spinType.setAdapter(spinAdapType);


txtInfo.setInputType(getType(1));
txtInfo.setSelection(txtInfo.getText().length());


txtName.setText(lList.get(position).Name);
txtInfo.setText(lList.get(position).ContactInfo);
spinRole.setSelection(spinAdapRole.getItemPosition ("PersonRoleID", Integer.toString(lList.get(position).PersonnelRole ID)));
spinType.setSelection(spinAdapType.getItemPosition ("ContactTypeID", Integer.toString(lList.get(position).ContactTypeID )));


lblAccept.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (txtName.getText().toString().length() > 0 && txtInfo.getText().toString().length() > 0) {
int ContactTypeID = Integer.parseInt(spinAdapType.getItemString(spinTy pe.getSelectedItemPosition(), "ContactTypeID"));
int PersonnelRoleID = Integer.parseInt(spinAdapRole.getItemString(spinRo le.getSelectedItemPosition(), "PersonRoleID"));
String PersonnelRoleName = spinAdapRole.getItemString(spinRole.getSelectedIte mPosition(), "PersonRoleTitle");


lList.get(position).ContactInfo = txtInfo.getText().toString();
lList.get(position).Name = txtName.getText().toString();
lList.get(position).ContactTypeID = ContactTypeID;
lList.get(position).PersonnelRoleID = PersonnelRoleID;
lList.get(position).PersonnelRoleName = txtName.getText().toString();


fragAddCustomer.lContact.get(position).ContactInfo = txtInfo.getText().toString();
fragAddCustomer.lContact.get(position).Name = txtName.getText().toString();
fragAddCustomer.lContact.get(position).ContactType ID = ContactTypeID;
fragAddCustomer.lContact.get(position).PersonnelRo leID = PersonnelRoleID;
fragAddCustomer.lContact.get(position).PersonnelRo leName = txtName.getText().toString();


notifyDataSetChanged();


cDialog.dismiss();
} else
Toast.makeText(context, "مقادیر نباید خالی باشند.", Toast.LENGTH_SHORT).show();
}
});
lblCancell.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
cDialog.dismiss();
}
});


spinType.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
txtInfo.setInputType(getType(Integer.parseInt(spin AdapType.getItemString(spinType.getSelectedItemPos ition(), "AndroidKeyboardTypeID"))));
txtInfo.setSelection(txtInfo.getText().length());
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
cDialog.show();

hharddy
جمعه 25 بهمن 1398, 11:57 صبح
یه AlertDialog دارم که یه لایه براش طراحی کردم که فقط یه EditText داره می خوام با زدن دکمه تایید محتویات EditText رو بگیرم
کدش رو به این صورت نوشتم اما موقع اجرا کرش میکنه

private void runAlert() {

LayoutInflater aInflater = getActivity().getLayoutInflater();
final View dialogView =aInflater.inflate(R.layout.custom_dialog_mojodi, null);

new AlertDialog.Builder(getActivity())
.setTitle("افزایش موجودی")
.setCancelable(false)
.setView(dialogView )
.setPositiveButton("تایید", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
final EditText Increase = dialogView.findViewById(R.id.Increase);

Increase = Increase.getText().toString();
Toast.makeText(getActivity(),Increase.getText().to String();, Toast.LENGTH_SHORT).show();

}

})

.setNegativeButton("نیازی نیست" ,null)
.create()
.show();

}
مشکل این خط هست

Increase = Increase.getText().toString();