আমার একটি ক্রিয়াকলাপ রয়েছে যা থিম ব্যবহার করে। তবে, আমি যখন ডায়লগ উইন্ডোটির (পটভূমির ক্রিয়াকলাপের) বাইরে ক্লিক করি তখন ডায়ালগটি বন্ধ হয়ে যায়। আমি কীভাবে এই আচরণ বন্ধ করতে পারি?
আমার একটি ক্রিয়াকলাপ রয়েছে যা থিম ব্যবহার করে। তবে, আমি যখন ডায়লগ উইন্ডোটির (পটভূমির ক্রিয়াকলাপের) বাইরে ক্লিক করি তখন ডায়ালগটি বন্ধ হয়ে যায়। আমি কীভাবে এই আচরণ বন্ধ করতে পারি?
উত্তর:
এটি আপনাকে সাহায্য করতে পারে। এটি বাইরের ইভেন্টের স্পর্শটি পরিচালনা করার একটি উপায়:
ক্রিয়াকলাপের মতো থিমযুক্ত ডায়ালগ কীভাবে বাতিল করবেন যখন উইন্ডোর বাইরে স্পর্শ করা হয়?
ইভেন্টটি ধরা এবং কিছুই না করে, আমি মনে করি আপনি বন্ধ হওয়াটি আটকাতে পারবেন। তবে যেটি আশ্চর্যজনক তা হল, আপনার কার্যকলাপের কথোপকথনের ডিফল্ট আচরণটি আপনাকে বাইরে স্পর্শ করার সময় নিজেকে বন্ধ না করা উচিত ।
(পিএস: কোডটি উইন্ডো ম্যানেজ.লয়আউটপ্যারাম ব্যবহার করে)
ডায়লগ বক্সটি পিছনে কী চাপলে তা খারিজ করা থেকে বিরত রাখতে এটি ব্যবহার করুন
dialog.setCancelable(false);
এবং ডায়ালগ বাক্সটি বাইরের স্পর্শে বরখাস্ত হওয়া থেকে বিরত রাখতে এটি ব্যবহার করুন
dialog.setCanceledOnTouchOutside(false);
AlertDialog
বাইরের স্পর্শে বন্ধ হওয়া থেকে বাঁচার জন্য একটি উপায় সন্ধান করছেন এবং এটিই এই উত্তরটি সরবরাহ করে।
setCancelable(false)
আপনার আসলে যা আছে তা হ'ল একটি ক্রিয়াকলাপ (এটি ডায়ালগের মতো দেখায়) তবে অতএব setFinishOnTouchOutside(false)
ব্যাকগ্রাউন্ড ক্রিয়াকলাপটি ক্লিক করার সময় আপনি যদি এটি খোলার রাখতে চান তবে আপনার কার্যকলাপ থেকে কল করা উচিত call
সম্পাদনা: এটি কেবল অ্যান্ড্রয়েড এপিআই স্তর 11 বা ততোধিকের সাথে কাজ করে
onBackPressed()
নিজের দেহে কিছু না করাও ওভাররাইড করতে হবে
উচ্চতর এপিআই 10 এর জন্য, বাইরে স্পর্শ করার সময় ডায়ালগটি অদৃশ্য হয়ে যায়, যখন এপিআই 11 এর চেয়ে কম ডায়ালগটি অদৃশ্য হয় না। এটি প্রতিরোধের জন্য, আপনার এটি করা দরকার:
ইন styles.xml
:<item name="android:windowCloseOnTouchOutside">false</item>
অথবা
ইন onCreate()
পদ্ধতি, ব্যবহার করুন:this.setFinishOnTouchOutside(false);
দ্রষ্টব্য: এপিআই 10 এবং নিম্নের জন্য, এই পদ্ধতির কোনও প্রভাব নেই এবং এটি প্রয়োজনও নয়।
কথোপকথনটিকে বাতিল হতে বাতিল হিসাবে সেট করা যথেষ্ট, এবং হয় আপনি সতর্কতা ডায়ালগের বাইরে স্পর্শ করেন বা পিছনে বোতামটি ক্লিক করলে সতর্কতা ডায়ালগটি অদৃশ্য হয়ে যাবে। সুতরাং এটি ব্যবহার করুন:
setCancelable(false)
এবং অন্যান্য ফাংশন আর প্রয়োজন হয় না:
dialog.setCanceledOnTouchOutside(false);
আপনি যদি একটি অস্থায়ী ডায়লগ তৈরি করে থাকেন এবং কোডের এই লাইনটি রাখার জন্য সেখানে ভাবছেন, এখানে একটি উদাহরণ রয়েছে:
new AlertDialog.Builder(this)
.setTitle("Trial Version")
.setCancelable(false)
.setMessage("You are using trial version!")
.setIcon(R.drawable.time_left)
.setPositiveButton(android.R.string.yes, null).show();
এটি আমার জন্য কার্যকর এই কোডটি ব্যবহার করুন
AlertDialog.Builder alertDialog = new AlertDialog.Builder(this);
alertDialog.setCancelable(false);
Dialog dialog = new Dialog(context)
dialog.setCanceledOnTouchOutside(true);
//use this to dismiss the dialog on outside click of dialog
dialog.setCanceledOnTouchOutside(false);
//use this for not to dismiss the dialog on outside click of dialog.
সংলাপ সম্পর্কে আরও তথ্যের জন্য এই লিঙ্কটি দেখুন ।
dialog.setCancelable(false);
//used to prevent the dismiss of dialog on backpress of that activity
dialog.setCancelable(true);
//used to dismiss the dialog on onbackpressed of that activity
কেবল,
alertDialog.setCancelable(false);
ডায়ালগ বক্সের বাইরের ক্লিক থেকে ব্যবহারকারীদের বাধা দিন।
সতর্কতা ডায়ালগ হ্রাস করা হয়েছে তাই ডায়ালগ ডায়ালগটি = নতুন ডায়ালগ (এটি) ব্যবহার করুন;
বাইরের স্পর্শ বন্ধ রোধ করার জন্য
dialog.setCanceledOnTouchOutside(false);
setFinishOnTouchOutside(false)
API> 11 এর জন্য ব্যবহার করুন এবং চিন্তা করবেন না কারণ তার অ্যান্ড্রয়েডের ডিফল্ট আচরণ যা ক্রিয়াকলাপযুক্ত থিমযুক্ত ডায়ালগ এপিআই <11 :) এর জন্য বাইরের স্পর্শে শেষ হবে না! চিয়ার্স !!
আমি এটি অনক্রিয়েটে () ব্যবহার করি, মনে হয় অ্যান্ড্রয়েডের যে কোনও সংস্করণে কাজ করে; 5.0 এবং 4.4.x এ পরীক্ষা করা হয়েছে, জিঞ্জারব্রেডে পরীক্ষা করতে পারবেন না, স্যামসাং ডিভাইসগুলি (নোট 1 চলমান জিবি) ডিফল্টরূপে এটি রয়েছে:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB)
{
setFinishOnTouchOutside(false);
}
else
{
getWindow().clearFlags(LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH);
}
super.onCreate(savedInstanceState);
alert.setCancelable(false);
alert.setCanceledOnTouchOutside(false);
আমার ধারণা এটি আপনাকে সাহায্য করবে t এটি আমার জন্য কাজ করেছে
এখানে আমার সমাধান:
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Select The Difficulty Level");
builder.setCancelable(false);
ক্যান্সেললিস্টনার প্রয়োগকারীকে বিভিন্ন ক্রিয়া বরাদ্দ করাও সম্ভব:
alertDialog.setOnCancelListener(new DialogInterface.OnCancelListener(){
@Override
public void onCancel(DialogInterface dialogInterface) {
//Your custom logic
}
});
আমিও একই সমস্যায় পড়ছিলাম। এটি পরিচালনা করতে আমি OntouchListener
ডায়ালগটিতে একটি সেট করেছিলাম এবং ভিতরে কিছুই করি না। স্ক্রিনটি খুব ঘোরার সময় ডায়ালগ বরখাস্ত। এটি ঠিক করার জন্য আমি ডায়ালগটি সাধারণত খারিজ হয়ে যায় কিনা তা বলার জন্য আমি একটি ভেরিয়েবল সেট করেছিলাম। তারপরে আমি OnDismissListener
আমার ডায়ালগটিতে একটি সেট করেছিলাম এবং এর ভিতরে আমি ভেরিয়েবলটি পরীক্ষা করি। ডায়ালগটি যদি স্বাভাবিকভাবে বিচ্ছিন্ন হয়ে থাকে তবে আমি কিছুই করি না, না হলে আমি আবার ডায়ালগটি চালাচ্ছি (এবং তার অবস্থার বিষয়টি আমার ক্ষেত্রে বরখাস্ত করার সময় নির্ধারণ করছি)।
builder.setCancelable (মিথ্যা);
পাবলিক অকার্যকর মেনাজে (দেখুন ভি) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("¿Quieres ir a el Menú principal?");
builder.setMessage("Al presionar SI iras a el menú y saldras de la materia.");
builder.setPositiveButton("SI", null);
builder.setNegativeButton("NO", null);
builder.setCancelable(false);
builder.show();
}
এটি আপনার সমস্ত প্রশ্নের সঠিক উত্তর .... আশা করি আপনি অ্যান্ড্রয়েডে কোডিং উপভোগ করবেন
new AlertDialog.Builder(this)
.setTitle("Akshat Rastogi Is Great")
.setCancelable(false)
.setMessage("I am the best Android Programmer")
.setPositiveButton("I agree", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
})
.create().show();