অ্যান্ড্রয়েড ত্রুটি [নাল বস্তুর রেফারেন্সে ভার্চুয়াল পদ্ধতি 'শূন্য অ্যান্ড্রয়েড. অ্যাপ.অ্যাকশনবার' আহ্বান করার চেষ্টা]


102

আমার একটি কোড মডিউল রয়েছে যা নেভিগেশন ড্রয়ারের সাথে ভিউপেজার প্রয়োগ করে, যাইহোক, আমি কোডটি চালানোর সময় আমি নিম্নলিখিত ত্রুটিটি পাই

01-26 09:20:02.958: D/AndroidRuntime(18779): Shutting down VM
01-26 09:20:02.959: E/AndroidRuntime(18779): FATAL EXCEPTION: main
01-26 09:20:02.959: E/AndroidRuntime(18779): Process: com.example.tabwithslidingdrawer, PID: 18779
01-26 09:20:02.959: E/AndroidRuntime(18779): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.tabwithslidingdrawer/com.example.tabwithslidingdrawer.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.app.ActionBar.setDisplayHomeAsUpEnabled(boolean)' on a null object reference
01-26 09:20:02.959: E/AndroidRuntime(18779):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2314)
01-26 09:20:02.959: E/AndroidRuntime(18779):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2388)
01-26 09:20:02.959: E/AndroidRuntime(18779):    at android.app.ActivityThread.access$800(ActivityThread.java:148)
01-26 09:20:02.959: E/AndroidRuntime(18779):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1292)
01-26 09:20:02.959: E/AndroidRuntime(18779):    at android.os.Handler.dispatchMessage(Handler.java:102)
01-26 09:20:02.959: E/AndroidRuntime(18779):    at android.os.Looper.loop(Looper.java:135)
01-26 09:20:02.959: E/AndroidRuntime(18779):    at android.app.ActivityThread.main(ActivityThread.java:5312)
01-26 09:20:02.959: E/AndroidRuntime(18779):    at java.lang.reflect.Method.invoke(Native Method)
01-26 09:20:02.959: E/AndroidRuntime(18779):    at java.lang.reflect.Method.invoke(Method.java:372)
01-26 09:20:02.959: E/AndroidRuntime(18779):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:901)
01-26 09:20:02.959: E/AndroidRuntime(18779):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:696)
01-26 09:20:02.959: E/AndroidRuntime(18779): Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.app.ActionBar.setDisplayHomeAsUpEnabled(boolean)' on a null object reference
01-26 09:20:02.959: E/AndroidRuntime(18779):    at com.example.tabwithslidingdrawer.MainActivity.onCreate(MainActivity.java:95)
01-26 09:20:02.959: E/AndroidRuntime(18779):    at android.app.Activity.performCreate(Activity.java:5953)
01-26 09:20:02.959: E/AndroidRuntime(18779):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1128)
01-26 09:20:02.959: E/AndroidRuntime(18779):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2267)
01-26 09:20:02.959: E/AndroidRuntime(18779):    ... 10 more
09:20:02.959: E/AndroidRuntime(18779): Caused by:
java.lang.NullPointerException: Attempt to invoke virtual method 'void
android.app.ActionBar.setDisplayHomeAsUpEnabled(boolean)' on a null
object reference 01-26 09:20:02.959: E/AndroidRuntime(18779):     at
com.example.tabwithslidingdrawer.MainActivity.onCreate(MainActivity.java:95)

এই লাইনের দিকে নির্দেশ করে

// enabling action bar app icon and behaving it as a toggle button
        getActionBar().setDisplayHomeAsUpEnabled(true);
        getActionBar().setHomeButtonEnabled(true);

পুরো কোড http://pastebin.com/u1K72fr7

আমার প্রকাশ

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.tabwithslidingdrawer"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="19" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/Theme.Tabwithpager" >
        <activity
            android:name="com.example.tabwithslidingdrawer.MainActivity"
            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>

</manifest>

অ্যান্ড্রয়েড: থিম = "@ স্টাইল / থিম। ট্যাবউইথপাগার"

কোড http://pastebin.com/EFQLzRej

=================================================== ================ সম্পাদনা / আপডেট:

এ থেকে আমি কী শিখলাম

যখনই এ জাতীয় ত্রুটি ঘটে

1. কী ধরণের ক্রিয়াকলাপ ব্যবহার করা হচ্ছে তা পরীক্ষা করুন, এটি কি একটি সাধারণ অ্যান্ড্রয়েড appঅ্যাপ ক্রিয়াকলাপ বা অ্যাপকম্প্যাটঅ্যাক্টিভিটি বা অ্যাকশনবার্টিভিটি এবং আরও অনেক কিছু।

২. আপনার ক্রিয়াকলাপের ধরণটি কমপ্যাট বিভাগের অন্তর্ভুক্ত কিনা তা পরীক্ষা করুন

উদাহরণস্বরূপ অ্যান্ড্রয়েড.এপ ভিত্তিক ক্রিয়াকলাপ / টুকরাটি অ্যাপ-কমপ্যাট প্রকার নয়, তবে অ্যান্ড্রয়েড.সপোর্ট.ভ ৪.এপ.ফ্রেগমেন্ট বা অ্যান্ড্রয়েড.সপ্পোর্ট.ভি ৪.এপ.অ্যাক্টিভিটি কমপ্যাট অ্যাপকম্প্যাট ভিত্তিক

যদি এটি অ্যাপক্যাম্পটের অধীনে আসে তবে আমরা android.app প্রকারের জন্য getSupportActionBar () ব্যবহার করি আমরা getActionBar () ব্যবহার করতে পারি

৩. ম্যানিফেস্ট ফাইলটিতে প্রশ্নযুক্ত ক্রিয়াকলাপে প্রয়োগ হওয়া থিমটি পরীক্ষা করে দেখুন

উদাহরণস্বরূপ: ম্যানিফেস্ট ফাইলে যদি থিম প্রয়োগ করা হয় তবে অ্যান্ড্রয়েড বলতে বলা হয়: থিম = "@ অ্যান্ড্রয়েড: স্টাইল / থিম H ডায়ালগ" ডায়ালগ "getActionBar () কাজ করবে

তবে ম্যানিফেস্টে ক্রিয়াকলাপের জন্য থিমটি যদি অ্যান্ড্রয়েড: থিম = "@ শৈলী / থিম। অ্যাপকম্প্যাট.লাইট" হিসাবে থাকে তবে আপনাকে getSupportActionBar () ব্যবহার করতে হবে


4
আপনি চেষ্টা করেন getSupportActionbar()?
কিংফিশার ফুুক

আমি ইতিমধ্যে আমার কোডটিতে getSupportActionbar ব্যবহার করছি
viVekH

আপনি অ্যাপ কমপ্যাট থিম ব্যবহার করেছেন? আরও সাহায্যের জন্য আপনার ক্রিয়াকলাপের ঘোষণার সাথে আপনার ম্যানিফেস্টটি এখানে পোস্ট করা উচিত।
কিংফিশার ফুুক

আপনার নিজের কোডটি আবার দেখা উচিত। আমি supportActionBarআপনার থিমটি দিয়ে (নাল নয়) পেতে পারি । আপনি সব getActionBarদিয়ে প্রতিস্থাপন করেছেন getSupportActionBar? আরও 1 টি জিনিস, আপনার নিজের নতুন ত্রুটি লগটি আপডেট করা উচিত।
কিংফিশার ফুুক

4
আমি আপনার কোড তাকান। আসলে, আপনি এখনও getActionBar()আপনার ব্যবহার করেন MainActivity... এটি পরীক্ষা করুন এবং এতে পরিবর্তন করুন getSupportActionBar
কিংফিশার ফুুক

উত্তর:


153

আপনার কোডটি নিক্ষেপ করছে com.example.tabwithslidingdrawer.MainActivity.onCreate(MainActivity.java:95):

        // enabling action bar app icon and behaving it as toggle button
        getActionBar().setDisplayHomeAsUpEnabled(true);
        getActionBar().setHomeButtonEnabled(true);

সমস্যাটি বেশ সহজ - আপনার Activityনতুন থেকে উত্তরাধিকার সূত্রে প্রাপ্ত android.support.v7.app.ActionBarActivitygetSupportActionBar()পরিবর্তে আপনি একটি কল ব্যবহার করা উচিত getActionBar()

আপনি যদি আপনার কোডটির 65 লাইনের উপরে দেখতে পান তবে আপনি দেখতে পাবেন যে আপনি ইতিমধ্যে এটি করছেন:

        actionBar = getSupportActionBar();
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
        // TODO: Remove the redundant calls to getSupportActionBar()
        //       and use variable actionBar instead
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setHomeButtonEnabled(true);

এবং তারপরে 87 লাইনটির নীচে নীচের অংশে দেখে মনে হচ্ছে আপনি একই চিত্রটি খুঁজে পেয়েছেন:

        getSupportActionBar().setTitle(
                        Html.fromHtml("<font color=\"black\">" + mTitle + " - "
                                        + menutitles[0] + "</font>"));
        // getActionBar().setTitle(mTitle +menutitles[0]);

আপনি কী মন্তব্য করেছেন তা লক্ষ্য করুন getActionBar()


8
কেবল একটি নোট: android.support.v7.app.ActionBarActivityএর পক্ষে অবচয় করা হয়েছে android.support.v7.app.AppCompatActivity। তবে বিষয়টি একই রকম।
ফানকিশনাল

4
একটি খণ্ডের ভিতরে দেখুন এখানে দেখুন
জ্যাকট্রেড

31

কেহ ব্যবহার করতে চায় তাহলে android.app.ActionBar এবং android.app.Activity আপনি অ্যাপ্লিকেশন থিম পরিবর্তন করা উচিত styles.xml , উদাহরণস্বরূপ:

<style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar">

সমস্যাটি হ'ল আপনি একটি অ্যাপকম্প্যাট থিম ব্যবহার করতে পারেন ।

অন্যদিকে, আপনি যদি android.support.v7.app.ActionBar ব্যবহার করতে চান এবং আপনি অ্যাপকম্প্যাটঅ্যাক্টিভিটির সাহায্যে আপনার ক্রিয়াকলাপ প্রসারিত করেন তবে এই সমস্যাটি এড়াতে আপনাকে অবশ্যই অ্যাপকম্প্যাট থিম ব্যবহার করতে হবে , উদাহরণস্বরূপ:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">

আশাকরি এটা সাহায্য করবে.


আপনি এই উত্তর হিসাবে AppCompatActivityপরিবর্তে থেকে প্রসারিত করতে পারেন । Activity
কিথ

অবশ্যই @ কিথ, আপনি যদি অ্যাপকম্প্যাট থিমটি ব্যবহার করতে চান তবে আপনাকে অবশ্যই একটি অ্যাপকম্প্যাটঅ্যাক্টিভিটি ব্যবহার করতে হবে অন্যথায় আপনার একই বেমানান সমস্যা হবে।
ক্রুবিও

@ ক্রুবিও ধন্যবাদ!
কুমারেশ বাবু এনএস

18

আপনি যখন appcompatActivity প্রসারিত করেন তখন ব্যবহার করুন

this.getSupportActionBar().setDisplayHomeAsUpEnabled(true);

এবং আপনি যখন অ্যাকশনবার বাড়ান তখন ব্যবহার করুন

this.getActionBar().setDisplayHomeAsUpEnabled(true);

টুলবার / অ্যাকশনবারের সূচনা করার পরে এই ক্রিয়াকলাপটি অনক্রিটে কল করতে ভুলবেন না


12

আমি মনে করি আপনি যা করতে চান তা getActivity () কাস্ট করা হয়। উদাহরণ স্বরূপ:

((AppCompatActivity)getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(true);

নতুন সমর্থন লাইব্রেরিগুলিতে আপনার এটি করা দরকার। অ্যাপকম্প্যাটঅ্যাক্টিভিটি অ্যাকশনবার অ্যাক্টিভিটি প্রতিস্থাপন করেছে।


7

এখানে চেক করার চেষ্টা করুন

রেস >> মান >> শৈলী.এক্সএমএল

নিশ্চিত করুন যে এর মতো কোনও কোড নেই

<item name="windowActionBar">false</item>

যদি এর মতো কোড থাকে তবে আপনি কিছু সময়ের জন্য অক্ষম করতে পারেন বা এটি মুছতে পারেন


স্মরণ করার জন্য আপনাকে ধন্যবাদ!! : ডিআইও leftুকে <item name="windowNoTitle">true</item>পড়েছিল, যা অপসারণ করতে হয়েছিল।
গুজকি

আমার জন্য, অ্যান্ড্রয়েড android:theme="@style/AppTheme.NoActionBar"<avticity>
ম্যানিফেস্ট.এক্সএমএল

4

অ্যাপকম্প্যাটএটিভিটি ব্যবহার করার সময় অবশ্যই কল করতে হবে

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

আগে getSupportActionBar()

public class PageActivity extends AppCompatActivity {
     @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_item);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        this.getSupportActionBar().setDisplayHomeAsUpEnabled(false);

    }
}

3

আমার ক্ষেত্রে styles.xmlভুল অভিভাবক থিম সেট করার কারণে , অর্থাত্ NoActionBarথিমটি অবশ্যই getSupportActionbar()নাল:

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">

এটি এটিকে অন্য কোনও স্থানে পরিবর্তন করা হয়েছে:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">

2

আপ বোতামটি সাধারণত নিম্ন-স্তরের ক্রিয়াকলাপগুলির জন্য সক্রিয় করা হয়। আপনার ম্যানিফেস্টে আমি কেবল মেইনএকটিভিটি দেখি। আমি মনে করি না যে মূল ক্রিয়াকলাপের জন্য আপ বোতামটি সক্রিয় করা কোনও অর্থবোধ করে। একটি ক্রিয়াকলাপ তৈরি করুন, তারপরে ম্যানিফেস্টে প্যারেন্টঅ্যাক্টিভিটি নাম বৈশিষ্ট্য যুক্ত করুন। তারপরে ক্রিয়াকলাপের অনক্রিট পদ্ধতিতে আপ বোতামটি সক্রিয় করুন।
এটি সাহায্য করা উচিত।
https://developer.android.com/training/appbar/up-action.html


2

এই আশা করি এটি কার্যকর হবে, আমার কোডটি ভাল কাজ করে

Toolbar toolbar = findViewById(R.id.toolbar1);
setSupportActionBar(toolbar);

getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setTitle("");

1

আপনার ক্রিয়াকলাপ এই লাইন:

super.onCreate(savedInstanceState);
setContentView(R.layout.Activity_Main);

এটা ব্যবহার কর:

super.onCreate(savedInstanceState);
setContentView(R.layout.*);

* আপনার ক্রিয়াকলাপ


1

আমার ক্ষেত্রে আমারও একই ত্রুটি ছিল তবে আমার ভুলটি হ'ল আমি আমার সরঞ্জামদণ্ডটি ঘোষণা করিনি।

সুতরাং, getSupportActionBar ব্যবহার করার আগে আমাকে আমার সরঞ্জামদণ্ডটি সন্ধান করতে হয়েছিল এবং অ্যাকশনবার সেট করতে হয়েছিল

    appbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(appbar);

    getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_nav_menu);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);

1

আমি জানি যে এই প্রশ্নটি পুরানো কিছু। তবে এটি এই সমস্যাটি উপস্থিত অনেককে সহায়তা করতে পারে।

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

if(getSupportActionBar() != null){
 getSupportActionBar().setDisplayHomeAsUpEnabled(true);
 getSupportActionBar().setHomeButtonEnabled(true);
}

1

আপনি যদি android.app.ActionBar এবং android.app.Activity ব্যবহার করছেন তবে আপনার অ্যাপ্লিকেশন থিমটি অ্যাপ্লিকেশন ট্যাগে পরিবর্তন করা উচিত:

< application
     android:theme="@android:style/Theme.Holo.Light">

1

আপনি যদি এই ত্রুটি সম্মুখীন হন

"java.lang.NullPointerException: Attempt to invoke virtual method 'void androidx.appcompat.app.ActionBar.setTitle (java.lang.CharSequence)' on a null object reference. "

শুধু ব্যবহার

setSupportActionBar (toolbar). 

0

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

শিশু ক্রিয়াকে প্রসারিত করে - আপনি স্টাফ করার পরে সুপারকে কল করতে পারে

@Override
protected void onCreate(Bundle savedInstanceState)
{
    getActionBar().setDisplayHomeAsUpEnabled(true);
    super.onCreate(savedInstanceState);

শিশু অ্যাপকম্প্যাটঅ্যাক্টিভিটি প্রসারিত করে - প্রথমে আপনাকে সুপার কল করতে হবে

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState); //do this first
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);

0

এখনও এই সমস্যাটি রয়েছে এমন ব্যক্তিদের জন্য, আমার সমস্যাটি AndroidManLive.xML ফাইলে সমাধান করা হয়েছিল। যেখানে এটি বলেছে <activity android:name=".MainActivity" android:theme="@style/AppTheme.NoActionBar">, আপনাকে NoActionBarএটি তৈরি করে ফেলতে হবে <activity android:name=".MainActivity" android:theme="@style/AppTheme">, কারণ নোঅ্যাকশনবারের সাহায্যে অ্যাপটি মাইএ্যাকটিভিটি.জভার ভিতরে কল করলে কোনও অ্যাকশন বার চায় কিনা তা তা জানেনা does


0

আমি একবারে একই ত্রুটি পেয়েছি, আমি একটি ডিফল্ট সরঞ্জামদণ্ডের জন্য একটি টেম্পলেট তৈরি করেছি (টুলবার.এক্সএমএল) এবং তারপরে অন্য দৃশ্যে একটি সংযোগযোগ্য সরঞ্জামদণ্ড তৈরি করেছি।

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

সংযোগযোগ্য সরঞ্জামদণ্ডটির আইডি আইডিতে পরিবর্তন করে আমি ত্রুটিটি স্থির করেছি: কল_টুলবার এবং ত্রুটিটি চলে গেছে এবং আমার অ্যাপ্লিকেশন পুরোপুরি কাজ করেছে


0

আপনার এটি চেষ্টা করা উচিত। আমি মনে করি এটি কার্যকর হবে।

    Toolbar toolbar = findViewById(R.id.toolbar1);
    setSupportActionBar(toolbar);

    mDrawerLayout = findViewById(R.id.drawer_layout);
    mDrawerLayout = findViewById(R.id.drawer_layout);
    mDrawerLayout.setDrawerShadow(R.drawable.rectagle_with_black_outer,
            GravityCompat.START);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportActionBar().setHomeButtonEnabled(true);

    mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,
            toolbar, R.string.navigation_drawer_close,
            R.string.navigation_drawer_close) {
        public void onDrawerClosed(View view) {
            invalidateOptionsMenu();
        }

        public void onDrawerOpened(View drawerView) {
            invalidateOptionsMenu();
        }
    };

0

সেরা সমাধানটি আপনার অনক্রিয়েট পদ্ধতিতে এটি করুন

 ActionBar actionBar = getSupportActionBar();

        if(actionBar != null){
            actionBar.setDisplayHomeAsUpEnabled(true);
        }

তারপরে একটি নতুন ক্লাস

@Override
    public boolean onOptionsItemSelected(MenuItem item) {

        int id = item.getItemId();

        if(id == android.R.id.home){
            onBackPressed();
            return true;
        }

        return super.onOptionsItemSelected(item);
    }


যদিও এই কোড স্নিপেট প্রশ্নের উত্তর দিতে পারে, কেন এটি কীভাবে এবং কীভাবে সমস্যার সমাধান করতে সহায়তা করে তার ব্যাখ্যা সহ আপনার উত্তরটির গুণমান এবং দীর্ঘায়ু উন্নতি করে। দেখুন আমি কীভাবে ভাল উত্তর লিখব?
অমোরক্ষিত

0

দয়া করে পরে যুক্ত করুন Toolbar

Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().hide();

0

আমি অ্যান্ড্রয়েড অ্যাপ বিকাশে একটি নতুন। আমি এই ত্রুটির মুখোমুখি হয়েছি এবং এটি ঠিক করার চেষ্টা করে প্রায় 5 ঘন্টা ব্যয় করেছি। পরিশেষে, আমি খুঁজে পেয়েছি যে নিম্নলিখিতটি এই সমস্যার মূল কারণ এবং ভবিষ্যতে যদি কেউ আবারও এই সমস্যার মুখোমুখি হন তবে দয়া করে এটি পড়ুন।

আমি একটি ভিডিও পটভূমি সহ একটি হোম অ্যাক্টিভিটি তৈরি করার চেষ্টা করছিলাম, যার জন্য আমাকে ডিফল্ট সেটিং থেকে পূর্বের থিমটি পরিবর্তন Theme.AppCompat.Light.DarkActionBarকরতে হয়েছিলTheme.AppCompat.Light.NoActionBar । এটি হোম ক্রিয়াকলাপের জন্য দুর্দান্ত কাজ করেছে, তবে আমি যখন অ্যাকশন বারে একটি কাস্টম পাঠ্য সেট করেছিলাম সেখানে অন্য ক্রিয়াকলাপে নেভিগেট করার জন্য একটি অন্লিকলিটসনারের সাহায্যে একটি নতুন বোতাম সেট করি, তখন এই ত্রুটিটি ছুঁড়ে দেওয়া হয়।

সুতরাং, আমি যা করতে পেরেছি তা হল দুটি থিম তৈরি করা এবং সেগুলি নিম্নলিখিত ক্রিয়াকলাপগুলিতে নির্ধারিত করা।

Theme.AppCompat.Light.DarkActionBar - for Activities with Action Bar (default)
Theme.AppCompat.Light.NoActionBar - for Activities without Action Bar 

আমি ত্রুটিটি ঠিক করতে নিম্নলিখিত পরিবর্তনগুলি করেছি।

  1. স্টাইল.এক্সএমএল এ থিম সংজ্ঞা দেওয়া হচ্ছে

    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>
    
    <style name="DefaultTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>
    
  2. ক্রিয়াকলাপগুলিকে তাদের সম্মানজনক থিমগুলিতে সংযুক্ত করে AndroidManifest.xml

    <activity android:name=".Payment"
        android:theme="@style/DefaultTheme"/>
    
    <activity android:name=".WelcomeHome"
        android:theme="@style/AppTheme.NoActionBar">
    

-1

যখনই এ জাতীয় ত্রুটি ঘটে। নিম্নলিখিত বিষয়গুলি পরীক্ষা করার চেষ্টা করুন

  1. কী ধরণের ক্রিয়াকলাপ ব্যবহার করা হচ্ছে তা পরীক্ষা করুন, এটি কি একটি সহজ অ্যান্ড্রয়েড appঅ্যাপ ক্রিয়াকলাপ বা অ্যাপকম্প্যাটঅ্যাক্টিভিটি বা অ্যাকশনবার্টিভিটি এবং আরও অনেক কিছু।

  2. আপনার ক্রিয়াকলাপের ধরণটি কমপ্যাট বিভাগের আওতায় আসে কিনা তা পরীক্ষা করুন

উদাহরণস্বরূপ অ্যান্ড্রয়েড.এপ ভিত্তিক ক্রিয়াকলাপ / টুকরাটি অ্যাপ-কমপ্যাট প্রকার নয়, তবে অ্যান্ড্রয়েড.সপোর্ট.ভ ৪.এপ.ফ্রেগমেন্ট বা অ্যান্ড্রয়েড.সপোর্ট.ভ ৪.এপ.অ্যাক্টিভিটি কমপ্যাট অ্যাপকম্প্যাট ভিত্তিক

যদি এটি অ্যাপক্যাম্পটের আওতায় পড়ে তবে আমরা android.app প্রকারের জন্য getSupportActionBar () ব্যবহার করি এবং আমরা getActionBar () ব্যবহার করতে পারি

  1. ম্যানিফেস্ট ফাইলটিতে ক্রিয়াকলাপে প্রয়োগ হওয়া থিমটি পরীক্ষা করুন

উদাহরণস্বরূপ: ম্যানিফেস্ট ফাইলে যদি থিম প্রয়োগ করা হয় তবে অ্যান্ড্রয়েড বলতে বলা হয়: থিম = "@ অ্যান্ড্রয়েড: স্টাইল / থিম H ডায়ালগ" ডায়ালগ "getActionBar () কাজ করবে

তবে ম্যানিফেস্টে ক্রিয়াকলাপের জন্য থিমটি যদি অ্যান্ড্রয়েড: থিম = "@ শৈলী / থিম। অ্যাপকম্প্যাট.লাইট" হিসাবে থাকে তবে আপনাকে getSupportActionBar () ব্যবহার করতে হবে


-1

আপনার যদি নতুন একটি টুলবার তৈরি হয় তবে আপনি প্রয়োগটি সেটসপোর্টএকশনবার () প্রয়োগ করেছেন কিনা তা পরীক্ষা করে দেখুন; এটি আপনাকে অবশ্যই সাহায্য করবে


-3

এটি করার চেষ্টা করুন:

                getSupportActionBar().setDisplayHomeAsUpEnabled(true);
                getSupportActionBar().setHomeButtonEnabled(true);
                actionBar = getSupportActionBar();
                actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);

এর পরিবর্তে:

actionBar = getSupportActionBar();
                actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);

                getSupportActionBar().setDisplayHomeAsUpEnabled(true);
                getSupportActionBar().setHomeButtonEnabled(true);

getSupportActionBar()যদি ইতিমধ্যে actionBarভেরিয়েবলের ফলাফল থাকে তবে কেন কল করবেন ? দুটি রূপই খারাপ।
স্টান

আপনি getSupportActionBar () পরিবর্তন করুন; টু অ্যাকশনবার = getSupportActionBar (); এটা একই!!!! একটা পা কাঁপুন !!!!!
ক্যাবেজাস

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