শোডায়ালোগ হ্রাস করা হয়েছে। বিকল্প কি?


উত্তর:


92

Http://developer.android.com/references/android/app/Activity.html থেকে

সর্বজনীন চূড়ান্ত শূন্যস্থান প্রদর্শনের ডায়ালগ (ইন্ট আইডি) এপিআই স্তর 1 এ যুক্ত হয়েছে

এই পদ্ধতিটি এপিআই স্তরের ১৩ এ অবনতিযুক্ত হয়েছিল instead এটি অ্যান্ড্রয়েড সামঞ্জস্যতা প্যাকেজের মাধ্যমে পুরানো প্ল্যাটফর্মগুলিতে উপলব্ধ।

শো ডায়ালগের সাধারণ সংস্করণ (ইনট, বান্ডিল) যা কোনও আর্গুমেন্ট নেয় না। কেবল নাল আর্গুমেন্টের সাথে শোডায়ালগ (ইনট, বান্ডিল) কল করে।

কেন

কীভাবে সমাধান করব?

আরও


8

থেকে Activity#showDialog(int):

এই পদ্ধতিটি হ্রাস করা হয়। পরিবর্তে
নতুন DialogFragmentক্লাস ব্যবহার করুন FragmentManager; এটি অ্যান্ড্রয়েড সামঞ্জস্যতা প্যাকেজের মাধ্যমে পুরানো প্ল্যাটফর্মগুলিতে উপলব্ধ।


134
সুতরাং একটি সাধারণ ফাংশন কল করার পরিবর্তে, আপনি আরও একটি কাস্টম ক্লাস বাস্তবায়ন করতে হবে? দীর্ঘশ্বাস
ফেলুন

4
অবমানিত হওয়া যেমন হয় তেমন জিনিস নয়। যদি কোনও অবহেলিত ফাংশনটি এখনও কাজ করে এবং আমি যে পুরানো প্ল্যাটফর্মগুলিকে সমর্থন করতে চাই তার কোনও বিকল্প না পাওয়া যায়, তবে আমি এগিয়ে যাই এবং যাইহোক এটি ব্যবহার করি।
এডওয়ার্ড ফালক

@ অ্যাডওয়ার্ড আমি মনে করি যে পুরানো প্ল্যাটফর্মগুলির জন্য বিকল্প রয়েছে, এখানে দেখুন: ডেভেলপার.অ্যান্ড্রয়েড.
রুই পোসেস

6

ডায়লগ বাক্স প্রদর্শন করতে, আপনি নিম্নলিখিত কোডটি ব্যবহার করতে পারেন। এটি একাধিক চেক বাক্স সহ একটি সাধারণ সতর্কতা ডায়ালগ বাক্স প্রদর্শন করতে হবে:

AlertDialog.Builder alertDialog= new AlertDialog.Builder(MainActivity.this); .
            alertDialog.setTitle("this is a dialog box ");
            alertDialog.setPositiveButton("ok", new DialogInterface.OnClickListener() {

                @Override
                public void onClick(DialogInterface dialog, int which) {
                    // TODO Auto-generated method stub
                    Toast.makeText(getBaseContext(),"ok ive wrote this 'ok' here" ,Toast.LENGTH_SHORT).show();

                }
            });
            alertDialog.setNegativeButton("cancel", new DialogInterface.OnClickListener() {

                @Override
                public void onClick(DialogInterface dialog, int which) {
                    // TODO Auto-generated method stub
                        Toast.makeText(getBaseContext(), "cancel ' comment same as ok'", Toast.LENGTH_SHORT).show();


                }
            });
            alertDialog.setMultiChoiceItems(items, checkedItems, new DialogInterface.OnMultiChoiceClickListener() {

                @Override
                public void onClick(DialogInterface dialog, int which, boolean isChecked) {
                    // TODO Auto-generated method stub
                    Toast.makeText(getBaseContext(), items[which] +(isChecked?"clicked'again i've wrrten this click'":"unchecked"),Toast.LENGTH_SHORT).show();

                }
            });
            alertDialog.show();

শিরোনাম

আপনি যদি শর্ত ডায়লগ ফাংশনটি যদি বিভিন্ন সংলাপ বাক্স বা পাস হওয়া যুক্তি অনুসারে কিছু প্রদর্শন করতে ব্যবহার করেন তবে আপনি একটি স্ব ফাংশন তৈরি করতে পারেন এবং এটি onClickListener()ফাংশনের অধীনে কল করতে পারেন । কিছুটা এইরকম:

 public CharSequence[] items={"google","Apple","Kaye"};
public boolean[] checkedItems=new boolean[items.length];
Button bt;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    bt=(Button) findViewById(R.id.bt);
    bt.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            display(0);             
        }       
    });
}

এবং ফাংশন সংজ্ঞায় উপরে প্রদত্ত ডায়ালগ বক্সের কোডটি যুক্ত করুন।


3

এই কোডটি আমার পক্ষে কাজ করেছিল। সহজ ফিক্স তবে সম্ভবত পছন্দসই উপায় নয়।

public void onClick (View v) {
    createdDialog(0).show(); // Instead of showDialog(0);
}

protected Dialog createdDialog(int id) {
    // Your code
}

কিন্তু কীভাবে সেই পদ্ধতিতে এলআইস্টনার প্রয়োগ করতে হয়? তারিখ ও সময় কথোপকথনের জন্য বলি .... @ মিশালি
গুমুরুহ

আপনি যখন এক্সএমএলে অনক্লিক বৈশিষ্ট্যটি সংজ্ঞায়িত করেন তখন অ্যান্ড্রয়েড এটি আপনার জন্য করে।
মিশালি

4
আপনি যখন এক্সএমএলে অনক্লিক অ্যাট্রিবিউটকে এই জাতীয় সংজ্ঞা দেন তখন অ্যান্ড্রয়েড: অনক্লিক = "অনক্লিক" এবং তারপরে জাভাতে উপরে থাকা পদ্ধতিটি যখন আপনার কাছে জিগুরুহ অ্যান্ড্রয়েড শ্রোতা করে। আপনার যদি কাস্টম শ্রোতার প্রয়োজন হয় তবে আপনাকে নিজের একটি সংজ্ঞা দিতে হবে। আরও বিশদটি এই প্রশ্নের লিঙ্কে রয়েছে
মিশালি

1
package com.keshav.datePicker_With_Hide_Future_Past_Date;

import android.app.DatePickerDialog;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.DatePicker;
import android.widget.EditText;

import java.util.Calendar;

public class MainActivity extends AppCompatActivity {

    EditText ed_date;
    int year;
    int month;
    int day;

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

        ed_date=(EditText) findViewById(R.id.et_date);

        ed_date.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                Calendar mcurrentDate=Calendar.getInstance();
                year=mcurrentDate.get(Calendar.YEAR);
                month=mcurrentDate.get(Calendar.MONTH);
                day=mcurrentDate.get(Calendar.DAY_OF_MONTH);

                final DatePickerDialog   mDatePicker =new DatePickerDialog(MainActivity.this, new DatePickerDialog.OnDateSetListener()
                {
                    @Override
                    public void onDateSet(DatePicker datepicker, int selectedyear, int selectedmonth, int selectedday)
                    {
                              ed_date.setText(new StringBuilder().append(year).append("-").append(month+1).append("-").append(day));
                            int month_k=selectedmonth+1;

                    }
                },year, month, day);
                mDatePicker.setTitle("Please select date");
                // TODO Hide Future Date Here
                mDatePicker.getDatePicker().setMaxDate(System.currentTimeMillis());

                // TODO Hide Past Date Here
                //  mDatePicker.getDatePicker().setMinDate(System.currentTimeMillis());
                mDatePicker.show();
            }
        });
    }
}


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