কীভাবে একটি ডায়লগে একটি সম্পাদনা বাক্স তৈরি করতে হয়


211

আমি একটি পাসওয়ার্ড প্রবেশের জন্য একটি ডায়ালগ বাক্সে একটি সম্পাদনা বাক্স তৈরি করার চেষ্টা করছি। এবং যখন আমি করছি আমি করতে সক্ষম হচ্ছি না। আমি এটি একটি শিক্ষানবিস। এই আমাকে সাহায্য করুন।

public class MainActivity extends Activity {

Button create, show, setting;
//String pass="admin";String password;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    create = (Button)findViewById(R.id.amcreate);
    setting = (Button)findViewById(R.id.amsetting);
    show = (Button)findViewById(R.id.amshow);
    //input = (EditText)findViewById(R.id.this);

    setting.setVisibility(View.INVISIBLE);

    create.setOnClickListener(new View.OnClickListener() {
        public void onClick(View view) {
            Intent myIntent1 = new Intent(view.getContext(), Create.class);
            startActivityForResult(myIntent1, 0);
        }

    });

    show.setOnClickListener(new View.OnClickListener() {
        //@SuppressWarnings("deprecation")
        public void onClick(final View view) {

            // Creating alert Dialog with one Button
            AlertDialog.Builder alertDialog = new AlertDialog.Builder(MainActivity.this);

            //AlertDialog alertDialog = new AlertDialog.Builder(MainActivity.this).create();

            // Setting Dialog Title
            alertDialog.setTitle("PASSWORD");

            // Setting Dialog Message
            alertDialog.setMessage("Enter Password");
            **final EditText input = new EditText(this);**
            //alertDialog.setView(input);

            // Setting Icon to Dialog
            alertDialog.setIcon(R.drawable.key);

            // Setting Positive "Yes" Button
            alertDialog.setPositiveButton("YES",
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog,int which) {
                            // Write your code here to execute after dialog
                            Toast.makeText(getApplicationContext(),"Password Matched", Toast.LENGTH_SHORT).show();
                            Intent myIntent1 = new Intent(view.getContext(), Show.class);
                            startActivityForResult(myIntent1, 0);
                        }
                    });
            // Setting Negative "NO" Button
            alertDialog.setNegativeButton("NO",
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int which) {
                            // Write your code here to execute after dialog
                            dialog.cancel();
                        }
                    });

            // closed

            // Showing Alert Message
            alertDialog.show();
        }

    }); 

ভাবমূর্তি

এখানে চিত্র বর্ণনা লিখুন

আমি হিসাবে পেতে চাই

এখানে চিত্র বর্ণনা লিখুন

 AlertDialog.Builder alertDialog = new AlertDialog.Builder(MainActivity.this);
 alertDialog.setTitle("PASSWORD");
 alertDialog.setMessage("Enter Password");

 final EditText input = new EditText(MainActivity.this);
 LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
     LinearLayout.LayoutParams.MATCH_PARENT,
     LinearLayout.LayoutParams.MATCH_PARENT);
 input.setLayoutParams(lp);
 alertDialog.setView(input);
 alertDialog.setIcon(R.drawable.key);

 alertDialog.setPositiveButton("YES",
     new DialogInterface.OnClickListener() {
         public void onClick(DialogInterface dialog, int which) {
             password = input.getText().toString();
             if (password.compareTo("") == 0) {
                 if (pass.equals(password)) {
                     Toast.makeText(getApplicationContext(),
                         "Password Matched", Toast.LENGTH_SHORT).show();
                     Intent myIntent1 = new Intent(view.getContext(),
                         Show.class);
                     startActivityForResult(myIntent1, 0);
                 } else {
                     Toast.makeText(getApplicationContext(),
                         "Wrong Password!", Toast.LENGTH_SHORT).show();
                 }
             }
         }
     });

 alertDialog.setNegativeButton("NO",
     new DialogInterface.OnClickListener() {
         public void onClick(DialogInterface dialog, int which) {
             dialog.cancel();
         }
     });

 alertDialog.show();
 }

 });

1
এই বিকাশকারীকেandroid.com/guide/topics/ui/notifiers/toasts.html দেখুন । টোস্ট পজিশনিং পরীক্ষা করুন। তবে আমার ধারণা, এডিটেক্সট-এর জন্য সেটাররোর করা ভাল
রঘুনন্দন

উত্তর:


171

অ্যাক্টিটি কনটেক্সট ব্যবহার করুন

এটি প্রতিস্থাপন করুন

  final EditText input = new EditText(this);

দ্বারা

  final EditText input = new EditText(MainActivity.this);  
  LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
                        LinearLayout.LayoutParams.MATCH_PARENT,
                        LinearLayout.LayoutParams.MATCH_PARENT);
  input.setLayoutParams(lp);
  alertDialog.setView(input); // uncomment this line

1
@ অভিষেক আপনার আরম্ভ হয়। লাইক Dialog dialog = new Dialog(MainActivity.this)। আমি মনে করি আপনি যে কোডটি অনুমান করেন সেখান থেকে আপনি নিজের কোডটি অনুলিপি করেছেন
রঘুনন্দন

1
@ অভিষেক দুঃখিত, আমার বিভ্রান্তি দেখে মনে হয়েছে আপনার কাস্টম সংলাপ হয়েছে। public void onClick(DialogInterface dialogএটির কথোপকথন। এটি ব্যবহার করা কোনও সমস্যা নয় যা আপনি সতর্কতামূলক কাজটি বরখাস্ত করতে নেতিবাচক বোতামটি ক্লিক করেন।
রঘুনন্দন

1
@ অভিষেক একটি টোস্ট বার্তা প্রদর্শন করুন বা সম্পাদনা পাঠ্যের জন্য ত্রুটি সেট করুন। stackoverflow.com/questions/7747268/…
রঘুনন্দন

1
টোস্ট টোস্ট = টোস্ট.মেকটিেক্সট (মূলঅ্যাক্টিভিটি.এই, "দয়া করে পাসওয়ার্ড লিখুন!", টোস্ট.এলএনজিথ_লং); টোস্ট.সেটগ্রাভিটি (গ্র্যাভিটি.সেন্টার, 0, 0); toast.show (); এটি আমার কাছে টোস্টটি কেনার জন্য কাজ করেছিল।
এবি

5
হাই রঘু, আমি যদি এই সম্পাদনা বাক্সে বাম মার্জিন এবং ডান মার্জিন রাখতে চাই তবে আমি কী লিখব? প্রোগ্রামিকভাবে মার্জিন সেট করতে আমি অনেক জবাব চেষ্টা করেছিলাম, তবে কিছুই কার্যকর হয়নি :(
লুসিফার

287

আমি এই প্রশ্নের উত্তর দিতে খুব দেরী জানি কিন্তু অন্যদের জন্য যারা এখানে এই জাতীয় কিছু সন্ধান করছে তারা একটি সম্পাদনা পাঠ্য সহ একটি সতর্কতা বাক্সের একটি সহজ কোড

AlertDialog.Builder alert = new AlertDialog.Builder(this); 

অথবা

new AlertDialog.Builder(mContext, R.style.MyCustomDialogTheme);

আপনি যদি ডায়লগের থিমটি পরিবর্তন করতে চান।

final EditText edittext = new EditText(ActivityContext);
alert.setMessage("Enter Your Message");
alert.setTitle("Enter Your Title");

alert.setView(edittext);

alert.setPositiveButton("Yes Option", new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int whichButton) {
        //What ever you want to do with the value
        Editable YouEditTextValue = edittext.getText();
        //OR
        String YouEditTextValue = edittext.getText().toString();
    }
});

alert.setNegativeButton("No Option", new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int whichButton) {
        // what ever you want to do with No option.
    }
});

alert.show();

আমি এই কোডটি কোথায় রাখব? আমি যখন পদ্ধতিটিতে এটি চেষ্টা করেছি এবং চূড়ান্ত ক্ষেত্রের সম্পাদনা পাঠ্যটিকে ক্লাসের শীর্ষে স্থাপন করেছি, তখন এটি ক্র্যাশ হয়ে যায়।
সার্বিন

ক্রাশ কি?
সৈয়দা জুনাইরা

10
এই সম্পাদনা পাঠকে কীভাবে মার্জিন দেবেন?
ঘনশ্যাম নায়মা

1
জিজ্ঞাসিত বিষয় সম্পর্কে ভাল পরামর্শ, তবে একটি স্টাইল মন্তব্য প্রয়োজন। অ্যান্ড্রয়েড উইন্ডোজ নয়, এবং উইন 32 এ যেমন আবশ্যক যেমন একটি বাতিল বোতামের প্রয়োজন নেই, সেখানে ওএস "ব্যাক" বোতামটি বাতিল / না হিসাবে কাজ করে। সুতরাং আমার পরামর্শটি একটি পাসওয়ার্ড অনুরোধ কথোপকথনের নেতিবাচক বোতামটি এড়িয়ে চলেছে, এবং ইতিবাচক বোতামটি "হ্যাঁ" হওয়া উচিত নয় তবে এটি "ঠিক আছে" হওয়া উচিত (এবং এন্ড্রয়েড.আর.স্ট্রিং.ক ব্যবহার করে এটি স্থানীয়করণ করা উচিত)। আমার উত্তরে আরও দেখুন stackoverflow.com/questions/11459827/… বিষয়ে।
জান বার্গস্ট্রোম

2
সম্পাদনা ক্ষেত্রটি একটি পাসওয়ার্ডের অনুরোধে (একটি লিখিত লিখিত (edittext.setSingleLine ();) হওয়া উচিত এবং এটি একটি সংযুক্ত শারীরিক (বিটি) কীবোর্ড (বা একটি Chromebook) এ এন্টার চাপ দিয়ে ফোকাসটিকে ঝাঁপিয়ে তোলে পরের আইটেম, ইতিবাচক বোতাম। অর্থ যে পাঠ্য প্রবেশের পরে, দু'বার এন্টার চাপ দিয়ে সংলাপটি ইতিবাচকভাবে শেষ হয়েছে।
জান বার্গস্ট্রোম

36

সব থেকে সহজ হবে।

  • কথোপকথনের জন্য এক্সএমএল লেআউট ফাইল তৈরি করুন। এডিট টেক্সট, লিস্টভিউ, স্পিনার ইত্যাদির মতো যা ভিউ চান তা যুক্ত করুন

    এই দর্শনটি স্ফীত করুন এবং এটি সতর্কতা ডায়ালগ এ সেট করুন

প্রথমে লেআউট ফাইলটি দিয়ে শুরু করা যাক।

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center_horizontal"
    android:orientation="vertical">


    <EditText
        android:id="@+id/etComments"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="top"
        android:hint="Enter comments(Optional)"
        android:inputType="textMultiLine"
        android:lines="8"
        android:maxLines="3"
        android:minLines="6"
        android:scrollbars="vertical" />

</LinearLayout>

final View view = layoutInflater.inflate(R.layout.xml_file_created_above, null);
AlertDialog alertDialog = new AlertDialog.Builder(ct).create();
alertDialog.setTitle("Your Title Here");
alertDialog.setIcon("Icon id here");
alertDialog.setCancelable(false);
Constant.alertDialog.setMessage("Your Message Here");


final EditText etComments = (EditText) view.findViewById(R.id.etComments);

alertDialog.setButton(AlertDialog.BUTTON_POSITIVE, "OK", new OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {

    }
});


alertDialog.setButton(AlertDialog.BUTTON_NEGATIVE, "Cancel", new OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
        alertDialog.dismiss()
    }
});


alertDialog.setView(view);
alertDialog.show();

3
আপনি কি নায়ক।
অ্যাডামমকুইফ

আমি ক্রাশ। আমি ক্র্যাশ হওয়ার কারণটি খুঁজে পেয়েছি কারণ ফাইন্ড ভিউআইআইডি-তে 'ভিউ' মিস করেছি। এখন আমাকে কীভাবে একটি চেক বাক্স পরিচালনা করতে হবে তা জানতে হবে যাতে ডায়ালগটি এখনও জীবিত থাকা অবস্থায় আমি পাসওয়ার্ডটি প্রদর্শন করতে বা লুকিয়ে রাখতে পারি। মাল্টি আইটেমের পদ্ধতির চেষ্টা করেও এটি আমার লেআউটের সাথে একটি নিজস্ব চেক বাক্স যুক্ত করেছে!
ব্রায়ান রিইনহোল্ড

23

সরলীকৃত সংস্করণ

final EditText taskEditText = new EditText(this);
AlertDialog dialog = new AlertDialog.Builder(this)
        .setTitle("Add a new task")
        .setMessage("What do you want to do next?")
        .setView(taskEditText)
        .setPositiveButton("Add", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                String task = String.valueOf(taskEditText.getText());
                SQLiteDatabase db = mHelper.getWritableDatabase();
                ContentValues values = new ContentValues();
                values.put(TaskContract.TaskEntry.COL_TASK_TITLE, task);
                db.insertWithOnConflict(TaskContract.TaskEntry.TABLE,
                        null,
                        values,
                        SQLiteDatabase.CONFLICT_REPLACE);
                db.close();
                updateUI();
            }
        })
        .setNegativeButton("Cancel", null)
        .create();
dialog.show();
return true;

12

কোড নীচে চেষ্টা করুন:

alert.setTitle(R.string.WtsOnYourMind);

 final EditText input = new EditText(context);
 input.setHeight(100);
 input.setWidth(340);
 input.setGravity(Gravity.LEFT);

 input.setImeOptions(EditorInfo.IME_ACTION_DONE);
 alert.setView(input);

5

লেআউট প্যারামগুলিতে মার্জিন সেট করা অ্যালার্টডায়লগে কাজ করবে না। আপনাকে প্যারেন্ট লেআউটে প্যাডিং সেট করতে হবে এবং তারপরে সেই লেআউটে এডিটেক্সট যুক্ত করতে হবে।

এটি আমার কাজের কোটলিন কোড ...

val alert =  AlertDialog.Builder(context!!)

val edittext = EditText(context!!)
edittext.hint = "Enter Name"
edittext.maxLines = 1

val layout = FrameLayout(context!!)

//set padding in parent layout
layout.setPaddingRelative(45,15,45,0)

alert.setTitle(title)

layout.addView(edittext)

alert.setView(layout)

alert.setPositiveButton(getString(R.string.label_save), DialogInterface.OnClickListener {

    dialog, which ->
    run {

        val qName = edittext.text.toString()

        Utility.hideKeyboard(context!!, dialogView!!)

    }

})
alert.setNegativeButton(getString(R.string.label_cancel), DialogInterface.OnClickListener {

            dialog, which ->
            run {
                dismiss()
            }

})

alert.show()

4

আপনি একটি এক্সএমএল ফাইল তৈরি করে কাস্টম সতর্কতা ডায়ালগও তৈরি করতে পারেন।

dialoglayout.xml

   <EditText
    android:id="@+id/dialog_txt_name"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_margin="10dp"
    android:hint="Name"
    android:singleLine="true" >

    <requestFocus />
  </EditText>
   <Button
        android:id="@+id/btn_login"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="60dp"
        android:background="@drawable/red"
        android:padding="5dp"
        android:textColor="#ffffff"
        android:text="Submit" />

    <Button
        android:id="@+id/btn_cancel"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:layout_toRightOf="@+id/btn_login"
        android:background="@drawable/grey"
        android:padding="5dp"
        android:text="Cancel" />

জাভা কোড:

@Override//to popup alert dialog
public void onClick(View arg0) {
    // TODO Auto-generated method stub
    showDialog(DIALOG_LOGIN);
});


@Override
protected Dialog onCreateDialog(int id) {
    AlertDialog dialogDetails = null;

    switch (id) {
        case DIALOG_LOGIN:
            LayoutInflater inflater = LayoutInflater.from(this);
            View dialogview = inflater.inflate(R.layout.dialoglayout, null);
            AlertDialog.Builder dialogbuilder = new AlertDialog.Builder(this);
            dialogbuilder.setTitle("Title");
            dialogbuilder.setView(dialogview);
            dialogDetails = dialogbuilder.create();
            break;
    }
    return dialogDetails;
}

@Override
protected void onPrepareDialog(int id, Dialog dialog) {
    switch (id) {
        case DIALOG_LOGIN:
             final AlertDialog alertDialog = (AlertDialog) dialog;
             Button loginbutton = (Button) alertDialog
                .findViewById(R.id.btn_login);
             Button cancelbutton = (Button) alertDialog
                .findViewById(R.id.btn_cancel);
             userName = (EditText) alertDialog
                .findViewById(R.id.dialog_txt_name);
             loginbutton.setOnClickListener(new View.OnClickListener() {
                  @Override
                  public void onClick(View v) {
                      String name = userName.getText().toString();
                      Toast.makeText(Activity.this, name,Toast.LENGTH_SHORT).show();
             });
             cancelbutton.setOnClickListener(new View.OnClickListener() {
                      @Override
                      public void onClick(View v) {
                           alertDialog.dismiss();
                      }
             });
             break;
   }
}

এটাই আমার দরকার ছিল তবে আমি কীভাবে এটি এটির
রাজু

0

ওয়াসিমের উত্তর আমাকে সঠিক পথে নিয়ে গেছে তবে এটি আমার বর্তমান প্রকল্পের জন্য কাজ করার জন্য আমাকে কিছু পরিবর্তন করতে হয়েছিল। আমি এই ফাংশনটি একটি খণ্ডে ব্যবহার করছি এবং এটিকে বোতাম ক্লিক করে কল করছি।

fun showPostDialog(title: String) {
        val alert =  AlertDialog.Builder(activity)

        val edittext = EditText(activity)
        edittext.hint = "Enter Name"
        edittext.maxLines = 1

        var layout = activity?.let { FrameLayout(it) }

        //set padding in parent layout
//        layout.isPaddingRelative(45,15,45,0)
        layout?.setPadding(45,15,45,0)

        alert.setTitle(title)

        layout?.addView(edittext)

        alert.setView(layout)

        alert.setPositiveButton(getString(R.string.label_save), DialogInterface.OnClickListener {

                dialog, which ->
            run {

                val qName = edittext.text.toString()

                showToast("Posted to leaderboard successfully")

                view?.hideKeyboard()

            }

        })
        alert.setNegativeButton(getString(R.string.label_cancel), DialogInterface.OnClickListener {

                dialog, which ->
            run {
                dialog.dismiss()
            }

        })

        alert.show()
    }

    fun View.hideKeyboard() {
        val imm = context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
        imm.hideSoftInputFromWindow(windowToken, 0)
    }

    fun showToast(message: String) {
        Toast.makeText(activity, message, Toast.LENGTH_LONG).show()
    }

আমি আশা করি এটি নিকট ভবিষ্যতে অন্য কাউকে সহায়তা করবে। শুভ কোডিং!

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.