কীভাবে অনফ্রেগমেন্টআইট্রাকশনলিস্টনার প্রয়োগ করবেন


151

অ্যান্ড্রয়েড স্টুডিও ০.৮.২ এ নেভিগেশন ড্রয়ার সহ আমার কাছে একটি উইজার্ড উত্পন্ন অ্যাপ রয়েছে have

আমি একটি খণ্ড তৈরি করেছি এবং এটিকে নতুন ইনসট্যান্স () দিয়ে যুক্ত করেছি এবং আমি এই ত্রুটিটি পেয়েছি:

com.domain.myapp ই / অ্যান্ড্রয়েডআরটাইম ﹕ চূড়ান্ত অবলম্বন: প্রধান java.lang.ClassCastException: com.domain.myapp.MainActivity@422fb8f0 অবশ্যই onFragmentInterationListener প্রয়োগ করতে হবে

এই অনফ্রেগমেন্টআইট্রাকশনলিস্টনার কীভাবে প্রয়োগ করা যায় আমি কোথাও খুঁজে পাচ্ছি না ?? এটি অ্যান্ড্রয়েড এসডিকে ডকুমেন্টেশনেও পাওয়া যায় না!

MainActivity.java

import android.app.Activity;

import android.app.ActionBar;
import android.app.Fragment;
import android.app.FragmentManager;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.support.v4.widget.DrawerLayout;


public class MainActivity extends Activity
    implements NavigationDrawerFragment.NavigationDrawerCallbacks {

/**
 * Fragment managing the behaviors, interactions and presentation of the navigation drawer.
 */
private NavigationDrawerFragment mNavigationDrawerFragment;

/**
 * Used to store the last screen title. For use in {@link #restoreActionBar()}.
 */
private CharSequence mTitle;

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

    mNavigationDrawerFragment = (NavigationDrawerFragment)
            getFragmentManager().findFragmentById(R.id.navigation_drawer);
    mTitle = getTitle();

    // Set up the drawer.
    mNavigationDrawerFragment.setUp(
            R.id.navigation_drawer,
            (DrawerLayout) findViewById(R.id.drawer_layout));
}

@Override
public void onNavigationDrawerItemSelected(int position) {
    // update the main content by replacing fragments
    FragmentManager fragmentManager = getFragmentManager();

    switch (position) {
        case 0: fragmentManager.beginTransaction()
                .replace(R.id.container, PlaceholderFragment.newInstance(position + 1))
                .commit(); break; 
        case 1: fragmentManager.beginTransaction() 
                .replace(R.id.container, AboutFragment.newInstance("test1", "test2"))
                .commit(); break; // this crashes the app
        case 2: fragmentManager.beginTransaction()
                .replace(R.id.container, BrowseQuotesFragment.newInstance("test1", "test2"))
                .commit(); break; // this crashes the app
    }
}


public void onSectionAttached(int number) {
    switch (number) {
        case 1:
            mTitle = getString(R.string.title_section1);
            break;
        case 2:
            mTitle = getString(R.string.title_section2);
            break;
        case 3:
            mTitle = getString(R.string.title_section3);
            break;
    }
}

public void restoreActionBar() {
    ActionBar actionBar = getActionBar();
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
    actionBar.setDisplayShowTitleEnabled(true);
    actionBar.setTitle(mTitle);
}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
    if (!mNavigationDrawerFragment.isDrawerOpen()) {
        // Only show items in the action bar relevant to this screen
        // if the drawer is not showing. Otherwise, let the drawer
        // decide what to show in the action bar.
        getMenuInflater().inflate(R.menu.main, menu);
        restoreActionBar();
        return true;
    }
    return super.onCreateOptionsMenu(menu);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();
    if (id == R.id.action_settings) {
        return true;
    }
    return super.onOptionsItemSelected(item);
}

/**
 * A placeholder fragment containing a simple view.
 */
public static class PlaceholderFragment extends Fragment {
    /**
     * The fragment argument representing the section number for this
     * fragment.
     */
    private static final String ARG_SECTION_NUMBER = "section_number";

    /**
     * Returns a new instance of this fragment for the given section
     * number.
     */
    public static PlaceholderFragment newInstance(int sectionNumber) {
        PlaceholderFragment fragment = new PlaceholderFragment();
        Bundle args = new Bundle();
        args.putInt(ARG_SECTION_NUMBER, sectionNumber);
        fragment.setArguments(args);
        return fragment;
    }

    public PlaceholderFragment() {
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_main, container, false);
        return rootView;
    }

    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
        ((MainActivity) activity).onSectionAttached(
                getArguments().getInt(ARG_SECTION_NUMBER));
    }
}

}

উত্তর:


120

এখানে পোস্ট করা উত্তরগুলি সাহায্য করেনি, তবে নিম্নলিখিত লিঙ্কটি করেছে:

http://developer.android.com/training/basics/fragments/communicating.html

একটি ইন্টারফেস সংজ্ঞায়িত করুন

public class HeadlinesFragment extends ListFragment {
    OnHeadlineSelectedListener mCallback;

    // Container Activity must implement this interface
    public interface OnHeadlineSelectedListener {
        public void onArticleSelected(int position);
    }

    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);

        // This makes sure that the container activity has implemented
        // the callback interface. If not, it throws an exception
        try {
            mCallback = (OnHeadlineSelectedListener) activity;
        } catch (ClassCastException e) {
            throw new ClassCastException(activity.toString()
                    + " must implement OnHeadlineSelectedListener");
        }
    }

    ...
}

উদাহরণস্বরূপ, টুকরাটিতে নিম্নলিখিত পদ্ধতিটি বলা হয় যখন ব্যবহারকারী কোনও তালিকা আইটেমে ক্লিক করে। খণ্ডটি ইভেন্টটিকে পিতামাতার ক্রিয়াকলাপে সরবরাহ করতে কলব্যাক ইন্টারফেস ব্যবহার করে।

@Override
public void onListItemClick(ListView l, View v, int position, long id) {
    // Send the event to the host activity
    mCallback.onArticleSelected(position);
}

ইন্টারফেস প্রয়োগ করুন

উদাহরণস্বরূপ, নিম্নলিখিত ক্রিয়াকলাপ উপরের উদাহরণ থেকে ইন্টারফেস প্রয়োগ করে।

public static class MainActivity extends Activity
        implements HeadlinesFragment.OnHeadlineSelectedListener{
    ...

    public void onArticleSelected(int position) {
        // The user selected the headline of an article from the HeadlinesFragment
        // Do something here to display that article
    }
}

23 এর জন্য আপডেট: 8/31/2015

ওভাররাইড পদ্ধতিটি onAttach(Activity activity)এখন অবচয় করা হয়েছে android.app.Fragment, কোডটি আপগ্রেড করা উচিতonAttach(Context context)

@Override
public void onAttach(Context context) {
    super.onAttach(context);
}


@Override
public void onStart() {
    super.onStart();
    try {
        mListener = (OnFragmentInteractionListener) getActivity();
    } catch (ClassCastException e) {
        throw new ClassCastException(getActivity().toString()
                + " must implement OnFragmentInteractionListener");
    }
}

7
দয়া করে নোট করুন যে onAttach(Activity activity);এটি onAttach(Context context)
অবহেলা করা

1
@ এপিকপান্ডা ফোরস সত্যই আপনি ঠিক বলেছেন, আমি আমার পোস্ট আপডেট করেছি তা প্রতিফলিত করার জন্য
মেদা

1
এটি অনাচার থেকে অন স্টার্টে চলে যাওয়ার কোনও কারণ আছে কি? আমি কি এখনও কার্যকলাপের পরিবর্তে প্রসঙ্গটি ব্যবহার করে এটি চালিয়ে যেতে পারি?
লুই সাই

আমি মনে করি যে কেবল ব্যবহার করা onAttach(context)জরিমানা হিসাবে কাজ করবে
এপিকপ্যান্ডফোর্স

212

আপনারা যারা @ মিডা উত্তর পড়ার পরেও বুঝতে পারেন না তাদের জন্য এখানে এই ইস্যুটির আমার সংক্ষিপ্ত এবং সম্পূর্ণ ব্যাখ্যা:

ধরা যাক আপনার ২ টি টুকরো রয়েছে Fragment_Aএবং Fragment_Bএটি অ্যাপ থেকে স্বয়ংক্রিয়ভাবে উত্পন্ন are আপনার উত্পন্ন টুকরাগুলির নীচের অংশে, আপনি এই কোডটি সন্ধান করছেন:

public class Fragment_A extends Fragment {

    //rest of the code is omitted

    public interface OnFragmentInteractionListener {
        // TODO: Update argument type and name
        public void onFragmentInteraction(Uri uri);
    }
}

public class Fragment_B extends Fragment {

    //rest of the code is omitted

    public interface OnFragmentInteractionListener {
        // TODO: Update argument type and name
        public void onFragmentInteraction(Uri uri);
    }
}

সমস্যাটি কাটিয়ে উঠতে আপনাকে onFragmentInteractionআপনার ক্রিয়াকলাপে এমন পদ্ধতি যুক্ত করতে হবে , যা আমার ক্ষেত্রে নাম দেওয়া হয়েছে MainActivity2। এর পরে, আপনাকে এই জাতীয় implementsসমস্ত টুকরো করতে হবে MainActivity:

public class MainActivity2 extends ActionBarActivity
        implements Fragment_A.OnFragmentInteractionListener, 
                   Fragment_B.OnFragmentInteractionListener, 
                   NavigationDrawerFragment.NavigationDrawerCallbacks {
    //rest code is omitted

    @Override
    public void onFragmentInteraction(Uri uri){
        //you can leave it empty
    }
}

পিএস: সংক্ষেপে, এই পদ্ধতিটি টুকরাগুলির মধ্যে যোগাযোগের জন্য ব্যবহার করা যেতে পারে। আপনারা যারা এই পদ্ধতি সম্পর্কে আরও জানতে চান তাদের জন্য দয়া করে এটি পড়ুন লিঙ্কটি দেখুন


10
অ্যান্ড্রয়েড স্টুডিওতে SDK এর বর্তমান সংস্করণ সঙ্গে, এটা প্রয়োজন বাস্তবায়ন আপনি onFragmentIntereactior(Uri)পদ্ধতি, যা অন্যান্য উত্তরগুলির যেকোনটিকে উল্লেখ করা হয় না। +1

2
আপনাকে অনেক ধন্যবাদ!
ofir_aghai

এটি উল্লেখ করার জন্য ধন্যবাদ। আমাকে অনেক সাহায্য করেছে।
হাবলেমা

2
প্রয়োজন? আপনি শ্রোতাদের সাথে সম্পর্কিত কোডটি কেবল মুছতে পারেন ... আপনার যদি এমন টুকরো টুকরো হয়ে থাকে যা অন্য খণ্ডগুলির সাথে ইন্টারঅ্যাক্ট করার দরকার পড়ে না তবে সেই শ্রোতাগুলি অকেজো।
ট্রেস

4
গৃহীত উত্তরের চেয়ে অনুসরণ এবং বোঝার পক্ষে অনেক সহজ।
জেরিথিউবাম

44

Fragmentঅ্যান্ড্রয়েড স্টুডিও দ্বারা নির্মিত আপনার স্বয়ংক্রিয় উত্পন্ন দেখুন । আপনি যখন Fragmentনতুনটি তৈরি করেছেন , তখন স্টুডিও আপনার জন্য কোডের একগুচ্ছ স্টাব করেছিল। স্বতঃ উত্পাদিত টেম্পলেটটির নীচে একটি অভ্যন্তরীণ ইন্টারফেস সংজ্ঞা বলা হয় OnFragmentInteractionListener। আপনার Activityএই ইন্টারফেসটি প্রয়োগ করতে হবে। এটি Fragmentআপনার Activityইভেন্টগুলিকে অবহিত করার জন্য এটি প্রস্তাবিত প্যাটার্ন তাই এটি যথাযথ পদক্ষেপ নিতে পারে যেমন অন্য কোনও লোড Fragment। বিশদগুলির জন্য এই পৃষ্ঠাটি দেখুন, "ক্রিয়াকলাপের জন্য ইভেন্ট কলব্যাকগুলি তৈরি করা" বিভাগটি দেখুন: http://developer.android.com/guide/components/frations.html


ডকুমেন্টেশনে দেখানো হয়েছে কীভাবে শ্রোতাকে খণ্ডগুলিতে প্রয়োগ করতে হবে (যা ইতিমধ্যে উইজার্ড দ্বারা উত্পাদিত হয়েছে), তবে মূল ক্রিয়াকলাপে নয় যা অ্যাপটি ক্র্যাশ করে।
মারিও এম

3
বেপারটা এমন না. ডক (এবং উত্পন্ন কোড) ইন্টারফেসটি সংজ্ঞায়িত করে এবং যখন Activityসংযুক্ত থাকে তখন এর বিরুদ্ধে পরীক্ষা করে Fragment। আপনি যে ক্র্যাশটি দেখছেন তা হ'ল কারণ আপনার Activityইন্টারফেসটি কার্যকর হয়নি। আপনাকে আপনার প্রবেশ করতে হবে Activityএবং implements YourFragment.OnFragmentInteractionListenerতারপরে ইন্টারফেসে সংজ্ঞায়িত পদ্ধতির একটি প্রয়োগ যুক্ত করতে হবে।
ল্যারি শিফার

ঠিক আছে, তবে আমি কীভাবে সেই প্রয়োগটি যুক্ত করতে জানি না কারণ এটি অ্যান্ড্রয়েড এসডিকি ডকুমেন্টেশনে কোথাও নেই
মারিও এম

1
এটি এসডিকে অংশ নয়, তবে একটি সেরা অনুশীলন। উইজার্ড দ্বারা উত্পাদিত টেম্পলেট কোডটি কেবল আপনার জন্য ভিত্তি তৈরি করছে। ইন্টারফেসটি onFragmentInteraction(Uri uri)কেবল একটি স্টাব। আপনি এই পদ্ধতিটিকে আপনার যে কোনও কিছু করতে এবং Activityএটি প্রয়োগ করার জন্য আপনার প্রয়োজনগুলি তৈরি করতে পারেন। দেখুন এই সাহায্য করে কিনা ।
ল্যারি শিফার

3
এই ইঙ্গিতটি অনেক ঘন্টা বাঁচিয়েছিল। টুকরোটি ইউএন-চেক তৈরি করার সময় "ফ্রেগমেন্ট কারখানার পদ্ধতিগুলি অন্তর্ভুক্ত করুন" এবং "ইন্টারফেস কলব্যাক অন্তর্ভুক্ত করুন"। এবং আপনাকে অনফ্রেগমেন্টআইট্রেশনলিস্টনার প্রয়োগ করতে হবে না। আমি জাভা sdk 8. এর সাথে অ্যান্ড্রয়েড স্টুডিও 1.3.2 ব্যবহার করছি Android ধন্যবাদ ল্যারি শিফার
শিক্ষার্থী

28

আপনারা যারা এই পৃষ্ঠাটিতে যান তারা এই ত্রুটি সম্পর্কে আরও স্পষ্টতা খুঁজছেন, আমার ক্ষেত্রে ক্রিয়াকলাপটিকে কল করার জন্য এই ক্ষেত্রে 2 টি প্রয়োগ থাকা দরকার:

public class MyActivity extends Activity implements 
    MyFragment.OnFragmentInteractionListener, 
    NavigationDrawerFragment.NaviationDrawerCallbacks {
    ...// rest of the code
}

9

আপনার টুকরোগুলি থেকে নিম্নলিখিত কোডটি অপসারণ করার চেষ্টা করা উচিত

    try {
        mListener = (OnFragmentInteractionListener) activity;
    } catch (ClassCastException e) {
        throw new ClassCastException(activity.toString()
                + " must implement OnFragmentInteractionListener");
    }

ইন্টারফেস / শ্রোতা একটি ডিফল্ট তৈরি করা হয় যাতে আপনার কার্যকলাপ এবং খণ্ডগুলি আরও সহজে যোগাযোগ করতে পারে


2
এটি একটি খুব ভাল বিষয় যেহেতু বেশিরভাগ প্রাথমিক অ্যাপগুলিতে এই শ্রোতার প্রয়োজন হয় না।
কোড-শিক্ষানবিস

5

@ ব্যবহারকারী 26409021 এর উত্তর ছাড়াও, আপনি যদি একটি আইটেমফ্রেগমেন্ট যুক্ত করেছেন তবে আইটেমফ্র্যাগমেন্টের বার্তাটি;

Activities containing this fragment MUST implement the {@link OnListFragmentInteractionListener} interface.

এবং আপনার কার্যকলাপে যুক্ত করা উচিত;

public class MainActivity extends AppCompatActivity
    implements NavigationView.OnNavigationItemSelectedListener, ItemFragment.OnListFragmentInteractionListener {

//the code is omitted

 public void onListFragmentInteraction(DummyContent.DummyItem uri){
    //you can leave it empty
}

এখানে ডামি আইটেমটি আপনার আইটেমফ্রেগমেন্টের নীচে রয়েছে


5

আমার সাথে এটি এই কোডটি মুছে ফেলার কাজ করেছে:

@Override
    public void onAttach(Context context) {
        super.onAttach(context);
        if (context instanceof OnFragmentInteractionListener) {
            mListener = (OnFragmentInteractionListener) context;
        } else {
            throw new RuntimeException(context.toString()
                    + " must implement OnFragmentInteractionListener");
        }
    }

এভাবে শেষ হচ্ছে:

@Override
public void onAttach(Context context) {
    super.onAttach(context);
}

4

OnFragmentInteractionListenerক্রিয়াকলাপ যোগাযোগে টুকরোটি পরিচালনা করার জন্য ডিফল্ট বাস্তবায়ন। এটি আপনার প্রয়োজনের ভিত্তিতে প্রয়োগ করা যেতে পারে। মনে করুন আপনার যদি আপনার খণ্ডের মধ্যে কোনও নির্দিষ্ট ক্রিয়াকলাপের সময় আপনার ক্রিয়াকলাপের কোনও ক্রিয়াকলাপের প্রয়োজন হয় তবে আপনি এই কলব্যাক পদ্ধতিটি ব্যবহার করতে পারেন। আপনার হোস্টিং activityএবং এর মধ্যে যদি আপনার এই ইন্টারঅ্যাকশনটি দরকার না হয়fragment এই বাস্তবায়নটি সরিয়ে ফেলতে পারেন।

সংক্ষেপে আপনার implementযদি এই জাতীয় খণ্ড-ক্রিয়াকলাপের ইন্টার্যাকশন দরকার হয় তবে আপনার খণ্ড খণ্ড হোস্টিং ক্রিয়াকলাপে শ্রোতার উচিত

public class MainActivity extends Activity implements 
YourFragment.OnFragmentInteractionListener {..}

এবং আপনার খণ্ডটির এটির মতো সংজ্ঞা দেওয়া উচিত

public interface OnFragmentInteractionListener {
    // TODO: Update argument type and name
    void onFragmentInteraction(Uri uri);
}

জন্য সংজ্ঞা প্রদান void onFragmentInteraction(Uri uri);আপনার ক্রিয়াকলাপের

অন্যথায় যদি আপনার কোনও খণ্ড-ক্রিয়াকলাপের ইন্টারঅ্যাকশন না থাকে তবে কেবলমাত্র listenerআপনার খণ্ডের থেকে সূচনাটি সরিয়ে ফেলুনonAttach


3

কার্যকলাপের পরিবর্তে প্রসঙ্গ ব্যবহার করুন t এটি আমার পক্ষে কাজ করে।

@Override
    public void onAttach(Context context) {
        super.onAttach(context);
        try {
            mListener = (OnFragmentInteractionListener) context;
        } catch (ClassCastException e) {
            throw new ClassCastException(context.toString()
                    + " must implement OnFragmentInteractionListener");
        }
}

3

কেবলমাত্র একটি সংযোজন:

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

লক্ষ্যটি হ'ল আপনি নিজের খণ্ডটিকে একাধিক ক্রিয়াকলাপের সাথে সংযুক্ত করতে পারেন এবং একই যোগাযোগের পদ্ধতির পুনরায় ব্যবহার করতে পারেন করতে পারেন (প্রতিটি ক্রিয়াকলাপের প্রতিটি খণ্ডের জন্য নিজস্ব অনফ্রেগমেন্টআইন্ট্রাকশনলিস্টনার থাকতে পারে)।

তবে এবং যদি আমি নিশ্চিত যে আমার খণ্ডটি কেবলমাত্র এক ধরণের ক্রিয়াকলাপের সাথে সংযুক্ত থাকবে এবং আমি সেই ক্রিয়াকলাপের সাথে যোগাযোগ করতে চাই?

তারপরে, আপনি যদি ভারবোসিটির কারণে অনফ্রেগমেন্টআইট্রেশনলিস্টনার ব্যবহার করতে না চান তবে আপনি ব্যবহার করে আপনার ক্রিয়াকলাপের পদ্ধতিগুলি অ্যাক্সেস করতে পারেন:

((MyActivityClass) getActivity()).someMethod()

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

2

কেবল আপনার খণ্ডটির ক্রিয়াকলাপে যান এবং সমস্ত পদ্ধতি মুছুন ..... পরিবর্তে তৈরির পদ্ধতিতে on

আপনার খণ্ডটির কেবলমাত্র পদ্ধতি অনক্রেইটভিউতে এটি।

// শুধুমাত্র এই পদ্ধতিটি অন্য পদ্ধতি মোছার প্রয়োগ করে

 @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.fragment_main, container, false);
    return rootView;
}

এবং নিশ্চিত করুন যে এটি আপনার লেআউটটি আপনার জন্য ডেমো।


আপনাকে ধন্যবাদ ... কিছু দরকার হলে কল্পনাশিকাম ১০০৮০@gmail.com ড্রপ মেইল
কল্পনা এ নিকাম

1

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

@Override
public void onDetach() {
    super.onDetach();
    mListener = null;
}

এবং প্রসঙ্গ সহ নতুন স্টার্ট () পদ্ধতিটি ব্যবহার করার সময়

@Override
public void onDestroy() {
    super.onDestroy();
    mListener = null;
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.