ডায়ালগফ্রেগমেন্টের শিরোনামটি কীভাবে সেট করবেন?


163

এটি একটি সাধারণ কাজ হওয়া উচিত তবে কোনও কারণে আমি একটি ডায়ালগফ্রেগমেন্টের শিরোনাম সেট করার উপায় খুঁজে পেতে পারি । (আমি onCreateViewওভারলোড ব্যবহার করে ডায়ালগের সামগ্রীগুলি সেট করছি )।

ডিফল্ট শৈলী শিরোনামের জন্য একটি জায়গা ছেড়ে দেয়, তবে DialogFragmentশ্রেণিতে এটি সেট করার জন্য আমি কোনও পদ্ধতি খুঁজে পাচ্ছি না ।

onCreateDialogপদ্ধতিটি বিষয়বস্তুগুলি সেট করার জন্য যখন শিরোনামটি কোনওভাবে যাদুকরীভাবে সেট করা হয়, তাই আমি অবাক করে দেখি যে এটি কোনও ডিজাইনের মাধ্যমে রয়েছে, বা ওভারলোডটি ব্যবহার করার সময় এটি সেট করার জন্য একটি বিশেষ কৌশল আছে onCreateView

উত্তর:


312

তুমি ব্যবহার করতে পার getDialog().setTitle("My Dialog Title")

ঠিক এই রকম:

public static class MyDialogFragment extends DialogFragment {
    ...
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        // Set title for this dialog
        getDialog().setTitle("My Dialog Title");

        View v = inflater.inflate(R.layout.mydialog, container, false);
        // ...
        return v;
    }
    // ...
}

6
হ্যাঁ, প্রকৃতপক্ষে getDialog ()। সেটটাইটেল () কৌশলটি করে। সমাধানটি দেখার পরে এটি সেভাবে কাজ করার পক্ষে অনেক অর্থবোধ করে তবে কোনও কারণে আমি ডায়ালগফ্রেগমেন্ট শ্রেণিতে নিজেই শিরোনামটি সেট করার কলটি আশা করেছি (একই জায়গায় যেখানে সেটস্টাইল () এবং ডায়ালগফ্র্যাগমেন্ট ST স্টাইল_এনওএলটি সংজ্ঞায়িত হয়েছে)। সমাধানের জন্য আপনাকে অনেক ধন্যবাদ।
স্টিফ্যানক

1
আমি যদি শিরোনামের পটভূমি পরিবর্তন করতে চাই। এটা কি সম্ভব?
MinceMan

5
এছাড়াও মনে রাখবেন যে ডায়ালগটি এখনও তৈরি হয়নি বলে আপনি
খণ্ডের অনক্রিট

2
@ রব হোমস আমি ডায়ালগ ক্লাসের বাইরে থেকে শিরোনামটি সেট করতে চাই (যেখানে আমি উদাহরণটি তৈরি করি)। # মাই ডায়ালগফ্রেগমেন্ট মাইফ্রেগমেন্ট = নতুন মাই ডায়ালগফ্রেগমেন্ট (); myFragment.getDialog () setTitle ( "myTitle")। মাইফ্রেগমেন্ট.শো (getFragmentManager (), "মাই টাইটেল"); তবে, মনে হচ্ছে getDialog () এই মুহুর্তে শূন্য ফিরে আসে। এখান থেকে শিরোনাম সেট করার অন্য কোনও উপায় আছে (আমার নিজের সেটটাইটেল মেথডো তৈরি না করে)?
ডেভিড ডরিয়া

1
আমি বিশ্বাস করি জেসনের এপ্রোচ অ্যালবাম সাধারণ ক্ষেত্রে আরও সঠিক।
মিশেল

74

ওভাররাইডিং onCreateDialogএবং সরাসরি কাজটিতে শিরোনামটি সেট করছে Dialog? এটার মত:

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
    Dialog dialog = super.onCreateDialog(savedInstanceState);
    dialog.setTitle("My Title");
    return dialog;
}

9
আপনার সমাধানটি আরও ভাল কারণ খণ্ডটি কেবল কথোপকথনেই ব্যবহৃত হতে পারে
রুএক্স

এই সমাধানগুলি xamarin.android এর জন্যও কার্যকর
শীট্টু জোসেফ ওলুগবেঙ্গা


14

জেসনের উত্তরটি আমার পক্ষে কাজ করত, তবে শিরোনামটি দেখানোর জন্য এটি এখন নিম্নলিখিত সংযোজনগুলির প্রয়োজন।

প্রথমত, আপনার মাই ডায়ালগফ্রেগমেন্টের onCreate()পদ্ধতিতে, যুক্ত করুন:

setStyle(DialogFragment.STYLE_NORMAL, R.style.MyDialogFragmentStyle);

তারপরে, আপনার স্টাইল.এক্সএমএল ফাইলটিতে যুক্ত করুন:

<style name="MyDialogFragmentStyle" parent="Theme.AppCompat.Light.Dialog.Alert">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">false</item>
    <item name="android:windowActionBar">false</item>
    <item name="android:windowNoTitle">false</item>
</style>

কয়েক ঘন্টা বিভিন্ন জিনিস চেষ্টা করার পরে, এই একমাত্র আমার জন্য কৌশলটি করেছেন।

এনবি - Theme.AppCompat.Light.Dialog.Alertআপনার থিমের শৈলীর সাথে মিল রাখতে আপনাকে অন্য কোনও কিছুতে পরিবর্তন করতে হতে পারে।


থেকে android:windowNoTitle falseস্যুইচ করার পরে সেটিংস প্রয়োজনীয় ছিল না , তেমনি এটি সদৃশ শিরোনামগুলির ফলেও যথেষ্ট নয় (যদিও আমি নিশ্চিত করেছি যে এটি কেবল একবারে সেট করা হচ্ছে)। Android.Support.V7.App.AppCompatDialogFragmentAndroid.Support.V4.App.DialogFragment
সামিস

2

ডায়ালগফ্রেগমেন্টটি ডায়ালগ হিসাবে এবং ক্রিয়াকলাপ হিসাবে উপস্থাপিত হতে পারে। নীচের কোডটি ব্যবহার করুন যা উভয়ের জন্যই সঠিকভাবে কাজ করবে

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    if (getShowsDialog()) {
        getDialog().setTitle(marketName);
    } else {
        getActivity().setTitle(marketName);
    }
}

1

আপনি সরকারী দস্তাবেজগুলি একবার দেখে নিতে পারেন । আমি যেভাবে করেছি তা হ'ল:

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity())
            .setTitle("My Title");
    LayoutInflater inflater = getActivity().getLayoutInflater();
    View view = inflater.inflate(R.layout.my_layout, null);
    builder.setView(view);

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