অ্যাপ্লিকেশনটিতেই লোকাল পরিবর্তন করা হচ্ছে


197

আমার ব্যবহারকারীরা অ্যাপ্লিকেশনের মধ্যে লোকালটি পরিবর্তন করতে পারেন (তারা তাদের ফোনের সেটিংস ইংরেজিতে রাখতে চাইতে পারেন তবে আমার অ্যাপের সামগ্রী ফরাসী, ডাচ বা অন্য কোনও ভাষায় পড়তে পারেন ...)

কেন এটি 1.5 / 1.6 তে পুরোপুরি ঠিকঠাক তবে 2.0 তে আর নেই ???

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch(item.getItemId()) {
    case 201:
        Locale locale2 = new Locale("fr"); 
        Locale.setDefault(locale2);
        Configuration config2 = new Configuration();
        config2.locale = locale2;
        getBaseContext().getResources().updateConfiguration(
            config2, getBaseContext().getResources().getDisplayMetrics());
        // loading data ...
        refresh();
        // refresh the tabs and their content
        refresh_Tab ();   
     break;
     case 201: etc...

সমস্যাটি হ'ল মেনু ব্যবহারকারী এবং উপরের কোডের লাইনগুলিতে যত বেশি সময় নিচে চলেছে ...

এটি হ'ল মেনু:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    menu.add(0, 100, 1, "REFRESH").setIcon(android.R.drawable.ic_menu_compass);
    SubMenu langMenu = menu.addSubMenu(0, 200, 2, "NL-FR").setIcon(android.R.drawable.ic_menu_rotate);
        langMenu.add(1, 201, 0, "Nederlands");
        langMenu.add(1, 202, 0, "Français");
    menu.add(0, 250, 4, R.string.OptionMenu2).setIcon(android.R.drawable.ic_menu_send);
    menu.add(0, 300, 5, R.string.OptionMenu3).setIcon(android.R.drawable.ic_menu_preferences);
    menu.add(0, 350, 3, R.string.OptionMenu4).setIcon(android.R.drawable.ic_menu_more);
    menu.add(0, 400, 6, "Exit").setIcon(android.R.drawable.ic_menu_delete);

    return super.onCreateOptionsMenu(menu);
}

এই কাজটি আবার করাতে আমার এপিআই লেভেল 5 এ কী করা উচিত?

আপনি যদি এটি পরীক্ষা করতে চান তবে এখানে সম্পূর্ণ কোডটি রয়েছে:

import java.util.Locale;

import android.app.Activity;
import android.content.res.Configuration;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.SubMenu;
import android.widget.Toast;

public class Main extends Activity {
    /** Called when the activity is first created. */


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {

        SubMenu langMenu = menu.addSubMenu(0, 200, 2, "NL-FR").setIcon(android.R.drawable.ic_menu_rotate);
            langMenu.add(1, 201, 0, "Nederlands");
            langMenu.add(1, 202, 0, "Français");

        return super.onCreateOptionsMenu(menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch(item.getItemId()){

        case 201:

            Locale locale = new Locale("nl"); 
            Locale.setDefault(locale);
            Configuration config = new Configuration();
            config.locale = locale;
            getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics());
            Toast.makeText(this, "Locale in Nederlands !", Toast.LENGTH_LONG).show();
            break;

        case 202:

            Locale locale2 = new Locale("fr"); 
            Locale.setDefault(locale2);
            Configuration config2 = new Configuration();
            config2.locale = locale2;
            getBaseContext().getResources().updateConfiguration(config2, getBaseContext().getResources().getDisplayMetrics());

            Toast.makeText(this, "Locale en Français !", Toast.LENGTH_LONG).show();
            break;  

        }
        return super.onOptionsItemSelected(item);
    }
}

এবং এখানে তৈরি করা হয়:

<?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.cousinHub.ChangeLocale"
          android:versionCode="1"
          android:versionName="1.0">
        <application android:icon="@drawable/icon" android:label="@string/app_name">
            <activity android:name=".Main"
                      android:label="@string/app_name">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
        </application>
        <uses-sdk android:minSdkVersion="3" /> 
    </manifest>

এটি আমার যা মনে হচ্ছে তা:

<uses-sdk android:minSdkVersion="5" />

=> এটি কেবল জরিমানা কাজ করে ...

<uses-sdk android:minSdkVersion="3" />

=> আপনি লোকাল পরিবর্তন করার সময় মেনু সঙ্কুচিত হয়ে যায় !!!

যেহেতু আমি আমার অ্যাপ্লিকেশনটি 1.5 এর উপর ব্যবহারকারীদের জন্য অ্যাক্সেসযোগ্য রাখতে চাই, আমার কী করা উচিত ??


"সঙ্কুচিত" বলতে কী বোঝ?
কমন্সওয়্যার

এটি প্রতিটি সময় আরও ছোট হয়। আমি সম্ভবত getBaseContext ছাড়া অন্য কিছু ব্যবহার করা উচিত?
হুবার্ট

সম্ভবত এই লাইনগুলি সমস্যা তৈরি করছে না যেমন আমি যখন লোকালে পরিবর্তনের জন্য খুব মৌলিক অ্যাপটি করি তখন আমার "মেনু সঙ্কুচিত" হয় না have আমি ভেবেছিলাম এটি সম্ভবত কারণ আমার ক্রিয়াকলাপটি আসলে একটি ট্যাবএকটিভিটি ছিল তবে এটির পরেও আমি সমস্যাটি পুনরায় তৈরি করতে পারি না। এই বাগের সঠিক কারণ কী তা আমাকে আরও তদন্ত করতে হবে ... তারপরে আর অনুসন্ধান করবেন না। উত্তরটি খুঁজে পেলে আমি এখানে পোস্ট করব। চিয়ার্স, এইচ।
হুবার্ট

কীভাবে সমস্যাটি তৈরি করা যায় তার একটি উদাহরণ দিয়ে আমি আমার প্রথম পোস্টটি সম্পাদনা করেছি। এবং আমি প্রকৃতপক্ষে লক্ষ্য করেছি যে যখন আমি <ব্যবহারসমূহ-এসডকে অ্যান্ড্রয়েড: minSdkVersion = "5" /> "3" তে পরিবর্তন করি ... তখন সমস্যাটি উপস্থিত হয়!
হুবার্ট

1
আপনি নিম্নলিখিত গ্রন্থাগার, কোন ভাষায় তালিকা উপলব্ধ করা, আপনার সেটিংস পর্দা জন্য অগ্রাধিকার ব্যবহার করতে পারেন, এবং আপনার অ্যাপ্লিকেশান ভাষা অগ্রাহ্য: github.com/delight-im/Android-Languages
কাকের ডাক

উত্তর:


151

মূল প্রশ্নের মাধ্যমে স্থানীয় লোকাল সম্পর্কে ঠিক অন্যটি সম্পর্কিত নয়, অন্যান্য সমস্ত লোকাল সম্পর্কিত প্রশ্ন এই প্রশ্নের সাথে উল্লেখ করছে। এজন্য আমি এখানে বিষয়টি পরিষ্কার করতে চেয়েছি। আমি এই প্রশ্নটি আমার নিজের লোকেল স্যুইচিং কোডের একটি সূচনা পয়েন্ট হিসাবে ব্যবহার করেছি এবং খুঁজে পেয়েছি যে পদ্ধতিটি ঠিক সঠিক নয়। এটি কাজ করে, তবে কেবল কোনও কনফিগারেশন পরিবর্তন হওয়া (উদাহরণস্বরূপ স্ক্রিন রোটেশন) এবং কেবলমাত্র সেই নির্দিষ্ট ক্রিয়াকলাপে। কিছুক্ষণের জন্য একটি কোড নিয়ে খেলছি আমি নিম্নলিখিত পদ্ধতির সাথে শেষ করেছি:

আমি android.app. প্রয়োগটি প্রসারিত করেছি এবং নিম্নলিখিত কোডটি যুক্ত করেছি:

public class MyApplication extends Application
{
    private Locale locale = null;

    @Override
    public void onConfigurationChanged(Configuration newConfig)
    {
        super.onConfigurationChanged(newConfig);
        if (locale != null)
        {
            newConfig.locale = locale;
            Locale.setDefault(locale);
            getBaseContext().getResources().updateConfiguration(newConfig, getBaseContext().getResources().getDisplayMetrics());
        }
    }

    @Override
    public void onCreate()
    {
        super.onCreate();

        SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);

        Configuration config = getBaseContext().getResources().getConfiguration();

        String lang = settings.getString(getString(R.string.pref_locale), "");
        if (! "".equals(lang) && ! config.locale.getLanguage().equals(lang))
        {
            locale = new Locale(lang);
            Locale.setDefault(locale);
            config.locale = locale;
            getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics());
        }
    }
}

এই কোডটি নিশ্চিত করে যে প্রতিটি ক্রিয়াকলাপে কাস্টম লোকেল সেট থাকবে এবং এটি ঘূর্ণন এবং অন্যান্য ইভেন্টের উপর পুনরায় সেট করা হবে না।

আমি তাত্ক্ষণিকভাবে পছন্দ পরিবর্তন করতে প্রয়োগ করার চেষ্টা করেও অনেক সময় ব্যয় করেছি তবে সফল হই নি: ক্রিয়াকলাপ পুনঃসূচনা করার সময় ভাষাটি সঠিকভাবে পরিবর্তিত হয়েছিল, তবে পূর্ণ অ্যাপ্লিকেশন পুনরায় আরম্ভ না হওয়া পর্যন্ত নম্বর ফর্ম্যাট এবং অন্যান্য স্থানীয় বৈশিষ্ট্য প্রয়োগ করা হয়নি।

পরিবর্তন AndroidManifest.xml

যোগ করতে ভুলবেন না android:configChanges="layoutDirection|locale"যেমন AndroidManifest প্রতি কার্যকলাপ, পাশাপাশি android:name=".MyApplication"করার <application>উপাদান।


1
আপনি কি পছন্দসই ক্রিয়াকলাপটি মূল ক্রিয়াকলাপ থেকে ডাকা হচ্ছে? আপনি এটিকে পুনঃসূচনাতে রাখতে পারেন ... @ ওভাররাইড সুরক্ষিত শূন্যদল পুনরায় শুরু করুন () {যদি (! রিফ্রেশ (); । super.onResume (); } বেসরকারী শূন্য রিফ্রেশ () {সমাপ্তি (); ইনটেন্ট মাই আইটেন্ট = নতুন ইনটেন্ট (মেইন.থিস, মেইন.ক্লাস); startActivity (ইন্টেন্ট myIntent); }
ট্র্যাগ্রাগ্লিয়া

1
এটি আসলে আমার যা প্রয়োজন, আমি মেইনএকটিভিটিতে আপডেট কনফিগারেশন () কল করতাম তবে অ্যাপ্লিকেশনটি শেষ হয়ে গেলে আর মেনুগুলি আপডেট হয় না starts আপনার সমাধানটি সঠিক। আপনি যদি অবিলম্বে স্ট্রিংগুলি রিফ্রেশ করতে চান তবে আমার মনে হয় আপনার এখনও স্ট্রিংগুলি ম্যানুয়ালি পুনরায় সেট করতে হবে। (যেমন রিসেট বোতামের লেবেল বা মেনু পুনরায় তৈরি করুন)।
পান্না 13

এটি কি অ্যান্ড্রয়েড সিস্টেমের লোকেলের সাথে হস্তক্ষেপ করে?
Kostadin

17
মনে রাখবেন যে অ্যান্ড্রয়েড আপনাকে ( এবং ) দেয় এমন কনফিগারেশন অবজেক্টটি আপনাকে কখনই পরিবর্তন করতে হবে না । আপনার প্রথমে একটি অনুলিপি তৈরি করা উচিত । আমি সমস্যাটি সনাক্ত করার আগে এই কোডটি ডিবাগ করার জন্য কেবল এক ঘন্টা ব্যয় করেছি (এটি ক্রিয়াকলাপটি অবিরাম ফ্ল্যাশ ঘটাচ্ছে)। confignewConfigconfig = new Configuration(config);
imgx64

1
শীতল সূচনা থেকে অ্যাপ্লিকেশন শুরু করার সময়, সিস্টেম ফন্টের আকারটি বড় আকারে সেট করে এই কৌশলটিতে অ্যান্ড্রয়েড 7+ এ বিভ্রান্তি রয়েছে। গুগল updateConfiguration()কাজ করার পদ্ধতি পরিবর্তন করেছে, তাই কখনও কখনও আপনার ক্রিয়াকলাপ 2 টি ভিন্ন ভাষায় প্রদর্শিত হবে (বিশেষত ডায়ালগগুলিতে)। আরও তথ্য: stackoverflow.com/questions/39705739/…
মিঃ-আইডিই

61

ভাল ঘুমের পরে, আমি ওয়েবে উত্তরটি পেয়েছি (নিম্নলিখিত লাইনে "একটি সহজ গুগল অনুসন্ধান getBaseContext().getResources().updateConfiguration(mConfig, getBaseContext().getResources().getDisplayMetrics());"), এটি এখানে:

লিঙ্ক পাঠ্য => এই লিঙ্কটি screenshotsকী ঘটছে তাও দেখায় !

ঘনত্বটি এখানে সমস্যা ছিল , আমার এটি অ্যান্ড্রয়েড ম্যানিফেস্ট.এক্সএমএলে থাকা দরকার

<supports-screens
android:smallScreens="true"
android:normalScreens="true"
android:largeScreens="true"
android:anyDensity="true"
/>

সর্বাধিক গুরুত্বপূর্ণ হ'ল অ্যান্ড্রয়েড: যে কোনও ঘনত্ব = "সত্য"

AndroidManifest.xmlপ্রতিটি ক্রিয়াকলাপের জন্য (Android 4.1 এবং নীচে এর জন্য) নিম্নলিখিতগুলিতে যুক্ত করতে ভুলবেন না :

android:configChanges="locale"

আপনি এখানে অ্যান্ড্রয়েড 4.2 (এপিআই স্তর 17) ব্যাখ্যাটি তৈরি করার সময় এই সংস্করণটি প্রয়োজন :

android:configChanges="locale|layoutDirection"

3
আমি অ্যান্ড্রয়েড ছিল: anyDensity = "মিথ্যা" গুগল পরামর্শে কারণে (উত্তরাধিকার ফর এপ্লিকেশনস কৌশলের - বিন্দু 9: developer.android.com/intl/fr/guide/practices/... )। সাবধান!
হুবার্ট

2
আমি লোকেল পরিবর্তন করার পরে বোতামের পাঠ্যগুলি পরিবর্তন হয় না। আমি অবাক হই যে স্ট্রিং রিসোর্সযুক্ত সমস্ত উইজেটকে রিফ্রেশ করার কোনও সমাধান আছে। এখন আমি অনরেষ্টার্ট () এ সেটটেক্সট (গেটস্ট্রিং (আর। স্ট্রিং.বাটন_লবেল)) ব্যবহার করে পাঠ্যটি পুনরায় আঁকছি। (অবশ্যই এটি পুনরায় চালু করার পরে অ্যাপ্লিকেশনটি পরিবর্তিত হয়))
এমেরাল্ডিও

আপনি পুনঃ কার্যকলাপ কল করতে পারেনactivity.recreate()
যাও ক্রা

59

অ্যান্ড্রয়েড এম এ শীর্ষ সমাধানটি কাজ করবে না। আপনার অ্যাপ্লিকেশন ক্লাস এবং সমস্ত ক্রিয়াকলাপ থেকে আপনার কল করা উচিত যা ঠিক করার জন্য আমি একটি সহায়ক শ্রেণি লিখেছি (আমি একটি বেসঅ্যাক্টিভিটি তৈরি করার পরামর্শ দিই এবং তারপরে সমস্ত ক্রিয়াকলাপগুলি উত্তরাধিকার সূত্রে পরিণত করব।

দ্রষ্টব্য : এটি সঠিকভাবে আরটিএল বিন্যাসের দিকনির্দেশকেও সমর্থন করবে।

সহায়ক শ্রেণি:

public class LocaleUtils {

    private static Locale sLocale;

    public static void setLocale(Locale locale) {
        sLocale = locale;
        if(sLocale != null) {
            Locale.setDefault(sLocale);
        }
    }

    public static void updateConfig(ContextThemeWrapper wrapper) {
        if(sLocale != null && Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
            Configuration configuration = new Configuration();
            configuration.setLocale(sLocale);
            wrapper.applyOverrideConfiguration(configuration);
        }
    }

    public static void updateConfig(Application app, Configuration configuration) {
        if (sLocale != null && Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR1) {
            //Wrapping the configuration to avoid Activity endless loop
            Configuration config = new Configuration(configuration);
            // We must use the now-deprecated config.locale and res.updateConfiguration here,
            // because the replacements aren't available till API level 24 and 17 respectively.
            config.locale = sLocale;
            Resources res = app.getBaseContext().getResources();
            res.updateConfiguration(config, res.getDisplayMetrics());
        }
    }
}

অ্যাপ্লিকেশন:

public class App extends Application {
    public void onCreate(){
        super.onCreate();

        LocaleUtils.setLocale(new Locale("iw"));
        LocaleUtils.updateConfig(this, getBaseContext().getResources().getConfiguration());
    }

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        LocaleUtils.updateConfig(this, newConfig);
    }
}

BaseActivity:

public class BaseActivity extends Activity {
    public BaseActivity() {
        LocaleUtils.updateConfig(this);
    }
}

11
এটি উত্তর গ্রহণ করা উচিত। নিশ্চিত করুন যে আপডেটকনফিগটি কনট্রাক্টরের কাছ থেকে ক্রিয়াকলাপের শ্রেণীর তৈরি না করে কল করা উচিত, আমি এই ভুলটি করছিলাম ..
হিতেশ সাহু

1
আপনি আপনার প্রোগ্রামে এটি কীভাবে প্রয়োগ করেছেন তার উপর নির্ভর করে। আপনি যদি কনফিগারেশন চ্যাঞ্জড () -র উপর ওভাররাইড করে থাকেন তবে আপনাকে .updateConfig () কল করার দরকার নেই এবং এজন্যই আপনি ত্রুটি পাচ্ছেন, কারণ এটি দুটিবার বলা হচ্ছে। যদি আপনি বলছেন যে কেবলমাত্র .setLocale () কল করা কাজ করছে না, এটি আপনার ক্রিয়াকলাপের উপর পুনরায় তৈরি করা () বা ক্রিয়াকলাপ / টুকরোতে নিজের পদ্ধতিতে কল করে আপনার ইউআইকে রিফ্রেশ করা দরকার কারণ আমি পূর্বেরটিকে পছন্দ করি না এমনকি এটি মসৃণ নয় তবে আপনি সমস্যা নিয়ে কখনই চিন্তা করবেন না)
আরজেফারে

3
// আমদানি android.support.v7.view.ContextThemeWrapper; আমদানি android.view.ContextThemeWrapper; // সঠিক নেমস্পেস
মেহেদী রোস্তামী

1
BaseActivity()কনস্ট্রাক্টর কল করা উচিত নয় super()?
লার্শ

1
এই সমাধানটি কি <application android:name=".App">স্পষ্টতই ম্যানিফেস্টে অন্তর্ভুক্ত করা অন্তর্ভুক্ত করে ? android:configChanges="layoutDirection|locale"ম্যানিফেস্টের প্রতিটি ক্রিয়াকলাপে যুক্ত করার বিষয়ে কীভাবে ?
LarsH

10

এটি আন্দ্রে এর উত্তরে আমার মন্তব্যের জন্য তবে আমি মন্তব্যে কোডটি অন্তর্ভুক্ত করতে পারি না।

আপনি কি পছন্দসই ক্রিয়াকলাপটি মূল ক্রিয়াকলাপ থেকে ডাকা হচ্ছে? আপনি এটি পুনরায় শুরুতে রাখতে পারেন ...

@Override
protected void onResume() {
    if (!(PreferenceManager.getDefaultSharedPreferences(
            getApplicationContext()).getString("listLanguage", "en")
            .equals(langPreference))) {
        refresh();
    }
    super.onResume();
}

private void refresh() {
    finish();
    Intent myIntent = new Intent(Main.this, Main.class);
    startActivity(myIntent);
}

2
আপনার অর্থ যদি আমি রানটাইমে ভাষা পরিবর্তন করতে চাই তবে আমাকে সেই ক্রিয়াকলাপটি শেষ করতে হবে এবং পরিবর্তনগুলি পেতে আবার সেই অ্যাক্টিভিটি শুরু করতে হবে? এটিকে পরিবর্তন করার অন্য কোনও উপায় আছে কেননা প্রতিটি সময় কার্যকলাপ শেষ করে এটি আবার শুরু করা ভাল না।
শ্রেয়াশ মহাজন

1
আরও ভাল করুনactivity.recreate()
ক্রা 10

@trgradlia, আমি উপরের কোডটি ব্যবহার করতে চাই। দয়া করে আমাকে বলুন, ল্যাংপ্রেফারেন্স কী? আমি মনে করি আমরা সম্প্রতি পরিবর্তিত ল্যাং এবং আগের ল্যাংয়ের সাথে তুলনা করছি।
মাহেন

1
কার্যকলাপের recreate()পদ্ধতি রয়েছে তাই আপনার কোডের recreate()জায়গায় ব্যবহার refresh()করুন। এটি refresh()পদ্ধতিতে আপনার 3 লাইন কোডটি সংরক্ষণ করবে
ইনজিমাম তারিক IT

1
@ ইন্জিমাম তারিকিট, টিপটির জন্য ধন্যবাদ ... উত্তরটি প্রায় 7 বছর পুরানো তাই আমি এটিকে যেমন রেখে দেব এবং লোকেরা এখানে মন্তব্যগুলিতে আপনার উন্নতি দেখতে পাবে।
ট্রাগ্রেগলিয়া

6

আমি অ্যান্ড্রয়েড ব্যবহার করতে পারিনি: যে কোনও ঘনত্ব = "সত্য" কারণ আমার গেমের অবজেক্টগুলি সম্পূর্ণ আলাদাভাবে অবস্থান করবে ... মনে হয় এটিও কৌশলটি করে:

// স্থানীয় তৈরি করা
লোকালে লোকাল 2 = নতুন লোকেল (লোকাল); 
Locale.setDefault (locale2);
কনফিগারেশন কনফিগারেশন = নতুন কনফিগারেশন ();
config2.locale = লোকালে 2;

// স্থানীয় আপডেট করা হচ্ছে
mContext.getResources ()। আপডেট কনফিগারেশন (কনফিগার 2, নাল);

এই সমাধানটি সবেমাত্র code Locale.setDefault(mLocale); Configuration config = getBaseContext().getResources().getConfiguration(); if (!config.locale.equals(mLocale)) { config.locale = mLocale; getBaseContext().getResources().updateConfiguration(config, null); }
এটির

1

আপনি যদি লোকালটি তাত্ক্ষণিকভাবে পরিবর্তনের জন্য মেনু বিকল্পগুলিতে প্রভাব ফেলতে চান তবে আপনাকে এটি করতে হবে।

//onCreate method calls only once when menu is called first time.
public boolean onCreateOptionsMenu(Menu menu) {
    super.onCreateOptionsMenu(menu);
    //1.Here you can add your  locale settings . 
    //2.Your menu declaration.
}
//This method is called when your menu is opend to again....
@Override
public boolean onMenuOpened(int featureId, Menu menu) {
    menu.clear();
    onCreateOptionsMenu(menu);
    return super.onMenuOpened(featureId, menu);
}

কিন্তু এই সমাধানটি কি প্রতিটি মেনুতে মেনু খোলায় না? আমি মনে করি onMenuOpenedলোকাল পরিবর্তনের পরে কেবল একবার ফোন করা উচিত।
5:25 এ ট্র্যান্ট করুন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.