android - আপনাকে এই থিমের সাথে একটি থিম.অ্যাপকম্পট থিম(বা উত্তরাধিকারী) ব্যবহার করতে হবে




android-layout android-studio (20)

অ্যান্ড্রয়েড স্টুডিও 0.4.5

কাস্টম ডায়ালগ বক্স তৈরির জন্য Android ডকুমেন্টেশন: http://developer.android.com/guide/topics/ui/dialogs.html

আপনি যদি একটি কাস্টম ডায়ালগ চান তবে আপনি ডায়ালগ API ব্যবহার করার পরিবর্তে একটি ডায়ালগ হিসাবে একটি কার্যকলাপ প্রদর্শন করতে পারেন। কেবল একটি কার্যকলাপ তৈরি করুন এবং <activity> থিম <activity> ম্যানিফেস্ট উপাদানটিতে Theme.Holo.Dialog এ থিম সেট করুন:

<activity android:theme="@android:style/Theme.Holo.Dialog" >

যাইহোক, যখন আমি এটি চেষ্টা করেছিলাম তখন আমি নিম্নলিখিত ব্যতিক্রমটি পেতে পারি:

java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity

আমি নিম্নলিখিত সমর্থন করছি, এবং আমি মিনিটের জন্য 10 এর বেশি কিছু ব্যবহার করতে পারি না:

minSdkVersion 10
targetSdkVersion 19

আমার শৈলী আমার নিম্নলিখিত আছে:

<!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">

এবং আমার ম্যানিফেস্টে আমি এই কার্যকলাপের জন্য আছে:

 <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:theme="@android:style/Theme.Holo.Light.Dialog"
            android:name="com.ssd.register.Dialog_update"
            android:label="@string/title_activity_dialog_update" >
        </activity>

এই মত ডায়ালগ বক্স তৈরি করা আমি কিছু করতে যাচ্ছিলাম, যেমন আমি ইতিমধ্যে লেআউটটি সম্পন্ন করেছি।

যে কেউ আমাকে এই সমস্যা প্রায় পেতে পারেন কিভাবে বলতে পারেন?


অ্যান্ড্রয়েড ম্যানিফেস্টে কোড কোড স্নিপেট অনুসরণ হিসাবে AppTheme এ কার্যকলাপের থিম পরিবর্তন করুন

<activity
  android:name=".MainActivity"
  android:label="@string/app_name"
  android:theme="@style/AppTheme">
</activity>

আপনাকে যা করতে হবে তা হল android:theme="@style/Theme.AppCompat.Light" add android:theme="@style/Theme.AppCompat.Light" , AndroidManifest.xml ফাইলটিতে আপনার অ্যাপ্লিকেশন ট্যাগে যোগ করুন।


আপনার থিম শৈলী অভিভাবক পরিবর্তন করুন

 parent="Theme.AppCompat"

এটা আমার জন্য কাজ করেছে ...


আপনার শৈলী যান এবং পিতা বা মাতা রাখা

parent="Theme.AppCompat"

পরিবর্তে

parent="@android:style/Theme.Holo.Light"

আপনি এই সমস্যাটি হ'ল কারন আপনি যে কার্যকলাপটি ডায়ালগ থিমটি প্রয়োগ করার চেষ্টা করছেন সেটি AppCompat প্রসারিত করার জন্য যা AppCompat থিমটি প্রয়োগ করা প্রয়োজন।

আপডেট : AppCompatActivity সম্প্রসারিত করা এই সমস্যাটিও থাকবে

এই ক্ষেত্রে, Theme.AppCompat Activity থেকে Activity জাভা উত্তরাধিকার পরিবর্তন করুন এবং ম্যানিফেস্টে ডায়ালগ থিমটিকে ছেড়ে দিন, এটি একটি নন Theme.AppCompat মূল্য

সাধারণ নিয়ম হল যে আপনি যদি আপনার কোডটি Android এর পুরোনো সংস্করণগুলি সমর্থন করতে চান তবে এটি AppCompat থিম থাকা উচিত এবং জাভা কোডটি AppCompatActivity প্রসারিত করা উচিত। যদি আপনার কাছে এমন কোন ক্রিয়াকলাপ থাকে যা এই সমর্থনটির প্রয়োজন হয় না, যেমন আপনি কেবল Android এর সাম্প্রতিক সংস্করণ এবং বৈশিষ্ট্যগুলির যত্ন নিয়ে থাকেন তবে আপনি এটিকে কোনও থিম প্রয়োগ করতে পারেন তবে জাভা কোডটিকে অবশ্যই পুরানো Activity প্রসারিত করতে হবে।

দ্রষ্টব্য: যখন AppCompatActivity (অথবা একটি উপশ্রেণী, AppCompatActivity Activity ) থেকে, Activity পরিবর্তন হয়, তখন "সমর্থন" ছাড়াই সংশ্লিষ্ট কলটিতে "সমর্থন" সহ বিভিন্ন কলগুলি অবশ্যই পরিবর্তন করতে হবে। সুতরাং, getSupportFragmentManager পরিবর্তে কল getFragmentManager কল getFragmentManager


আপনি যে ত্রুটির অনেক সমাধান আছে।

  1. অ্যাকশনবার অ্যাক্টিভিটি বা AppCompatActivity এর পরিবর্তে আপনাকে ক্রিয়াকলাপ বা ফ্র্যাগমেন্ট অ্যাক্টিভিটি ব্যবহার করতে হবে

  2. আপনি যদি অ্যাকশনবার্ক অ্যাক্টিভিটি বা অ্যাপকম্পপ্যাট অ্যাক্টিভিটি ব্যবহার করতে চান তবে আপনাকে শৈলী.এক্সএমএল থিম পরিবর্তন করতে হবে। হ্যালো . xxxx থিমেAppCompat.Light (প্রয়োজন হলে DarkActionbar এ যোগ করুন)

অ্যাকশন বার বা অ্যাপকম্পট সম্পর্কিত আপনার যদি উন্নত বৈশিষ্ট্যগুলির প্রয়োজন হয় না তবে আপনাকে অ্যাকশনবার বা অ্যাপকম্পট ব্যবহার করতে হবে না।


আমার ক্ষেত্রে আমার আমার ডিরেক্টরি ডিরেক্টরির মধ্যে কোন মান-v21 ফাইল আছে। তারপর আমি এটি তৈরি এবং কোড নিম্নলিখিত এটি যোগ করা:

  <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

আমার ক্ষেত্রে, আমি অ্যাপ্লিকেশনContext সঙ্গে একটি দৃশ্য inflating ছিল। যখন আপনি অ্যাপ্লিকেশনContext ব্যবহার করেন, থিম / স্টাইল প্রয়োগ করা হয় না, তাই থিম। অ্যাপল কম্পপটটি আমার শৈলীতে থাকলেও এটি প্রয়োগ করা হয় নি এবং এই ব্যতিক্রমটি ঘটে। আরো বিস্তারিত: অ্যাপ্লিকেশনContext সঙ্গে ব্যবহৃত inflater যখন থিম / স্টাইল প্রয়োগ করা হয় না


আমার জন্য উপরের Theme.AppCompat থিমের পরেও কাজ করে নি। অ্যাপ্লিকেশনটির জন্য আমার বেস থিম হিসাবে অ্যাপ্লিকেশন Theme.AppCompat । আমি com.android.support:design:24.1.0 ব্যবহার করছিলাম তাই আমি শুধু সংস্করণটি পরিবর্তন করেছি 24.1.1 । ধীরে ধীরে সিঙ্ক করার পরে, এটি আবার কাজ করে এবং ব্যতিক্রম চলে গেছে। আমার মনে হয় সমস্যাটি ডিজাইন সমর্থন লাইব্রেরিগুলির কিছু পুরোনো সংস্করণগুলির সাথে ছিল।

শুধু অন্য কিছু উত্তর কিছু মানুষের জন্য কাজ না হলে এখানে এই নির্বাণ।


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

প্রথম আমি এই আমদানি প্রতিস্থাপিত:

import android.support.v7.app.AppCompatActivity;

এটার সাথে:

import android.app.Activity;

তারপর থেকে আমার এক্সটেনশন পরিবর্তন:

public class MyClass extends AppCompatActivity {//...

এই জন্য:

public class MyClass extends Activity {//...

এবং এই আমদানি পরিবর্তন ছিল:

import android.support.v7.app.AlertDialog;

এই আমদানি করতে:

import android.app.AlertDialog;

এবং তারপরে আপনি কার্যকলাপ পর্যায়ে ম্যানিফেস্টে আপনার থিম ট্যাগটি ব্যবহার করতে পারেন:

android:theme="@android:style/Theme.Holo.Dialog" />

এবং শেষ পর্যন্ত, (যদি আপনার কাছে আপনার প্রোজেক্টের অন্যান্য ক্লাস আছে যা V7 অ্যাপকম্প্যাট ব্যবহার করতে হয়) আপনি নিজের প্রকল্পটি পরিষ্কার এবং পুনঃনির্মাণ করতে পারেন অথবা অ্যাপ্লিকেশন স্তরে ধীরে ধীরে বিল্ড ফাইলটিতে এই এন্ট্রিটি মুছে ফেলতে পারেন:

compile 'com.android.support:appcompat-v7:23.2.1'

যদি আপনার প্রোজেক্টের অন্যান্য ক্লাস আছে যা V7 অ্যাপকম্পট ব্যবহার করতে চান তবে কেবলমাত্র প্রকল্পটি সাফ করুন এবং পুনর্নির্মাণ করুন।


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

অ্যান্ড্রয়েড থিম = "@ শৈলী / Theme.AppCompat.NoActionBar"

যত তাড়াতাড়ি আমি আমার ম্যানিফেস্ট উপর থিম যোগ করা এটা সমস্যা সমাধান।


উপরের মতামত @ মার্ককিনের উত্তরটি অনুলিপি করার মতই আমার একই সমস্যা ছিল।

আমি পোস্ট শীর্ষে ত্রুটি বলেছি এবং আমি একটি সতর্কতা সংলাপ যোগ করার পরে ঘটেছে। আমি ম্যানিফেস্টে সব প্রাসঙ্গিক শৈলী তথ্য আছে। আমার সমস্যাটি সতর্কতা নির্মাতার প্রসঙ্গ প্রসঙ্গ পরিবর্তন করে নিরাময় করা হয়েছে - আমি পরিবর্তন করেছি:

new android.support.v7.app.AlertDialog.Builder(getApplicationContext())

করুন:

new android.support.v7.app.AlertDialog.Builder(this)

এবং কোন সমস্যা নেই।


এই সমাধান আমার জন্য কাজ করে।

ডিজাইন লাইব্রেরি সাপোর্ট ভি 4 এবং অ্যাপকম্প্যাট সাপোর্ট লাইব্রেরিগুলির উপর নির্ভর করে, তাই ধীরে ধীরে অ্যাপcompat এবং ডিজাইন লাইব্রেরির জন্য বিভিন্ন সংস্করণ ব্যবহার করবেন না।

ব্যবহার

 compile 'com.android.support:appcompat-v7:23.0.0'
 compile 'com.android.support:design:23.0.0'

পরিবর্তে

 compile 'com.android.support:appcompat-v7:23.0.0'
 compile 'com.android.support:design:23.1.0'

এটি আমার জন্য এটি সংশোধন করা হয়েছে: ম্যানিফেস্টে থিম নির্দিষ্ট করার পরিবর্তে, আমি এটি onCreate প্রসারিত করে এমন প্রতিটি ক্রিয়াকলাপের জন্য তৈরি করে দিয়েছি:

@Override
protected void onCreate(Bundle savedInstanceState) {
    setTheme(R.style.MyAppTheme);
    super.onCreate(savedInstanceState);
    setContentView(R.layout.my_activity_layout);
...
}

এখানে MyAppTheme এর একটি বংশধর, এবং এক্সএমএল সংজ্ঞায়িত করা হয়। মনে রাখবেন যে থিম অবশ্যই super.onCreate এবং setContentView আগে সেট করা উচিত।


এটি যখন আপনি একটি ফ্র্যাগমেন্টে একটি আলার্টডিয়ালগ চান

            AlertDialog.Builder adb = new AlertDialog.Builder(getActivity());
            adb.setTitle("My alert Dialogue \n");
            adb.setPositiveButton("OK", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {

                  //some code

            } });
            adb.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {

                 dialog.dismiss();

                } });
            adb.show();

থিম <android:theme="@android:style/Theme.Dialog"> ডায়ালগ <android:theme="@android:style/Theme.Dialog"> আমার অ্যাপ উইজেটে ডায়ালগ প্রদর্শনের জন্য ব্যবহৃত এবং আমার একই সমস্যা ছিল

আমি নীচের মত কার্যকলাপ কোড পরিবর্তন করে এই ত্রুটি সমাধান:

@Override
protected void onCreate(Bundle savedInstanceState) {
    setTheme(R.style.Theme_AppCompat_Dialog); //this line i added
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_dialog);
}

পছন্দসই কার্যকলাপ থিম পরিবর্তন করুন। এটি আমার জন্য কাজ করে:

<activity
            android:name="HomeActivity"
            android:screenOrientation="landscape"
            android:theme="@style/Theme.AppCompat.Light"
            android:windowSoftInputMode="stateHidden" />

মিনি sdk 10. AppCompat api লেভেল 11 থেকে পাওয়া যায়। সুতরাং 10 এর জন্য আপনি সমর্থন লাইব্রেরি থেকে AppCompat ব্যবহার করছেন যার জন্য আপনি Theme.AppCompat বা এর উত্তরসূরি ব্যবহার করতে Theme.AppCompat

ব্যবহার

android:theme="@style/Theme.AppCompat" >

অথবা আপনি শীর্ষে কর্ম বার চান না

android:theme="@style/Theme.AppCompat.NoActionBar">

অধিক তথ্য @

http://developer.android.com/guide/topics/ui/actionbar.html

সম্পাদনা:

আমি অপ পোস্ট পোস্ট ভুল হতে পারে।

দেখে মনে হচ্ছে একটি কার্যকলাপ থিম সঙ্গে একটি ডায়ালগ চায়। তাই ইতিমধ্যে Bobbake4 দ্বারা প্রস্তাবিত অ্যাকশন BarActivity পরিবর্তে Activity প্রসারিত।

এছাড়াও নীচের লিঙ্কে @ ডায়ালগ বৈশিষ্ট্যগুলি দেখুন

http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.4_r1/frameworks/base/core/res/res/values/themes.xml/


যদিও আমার থিমটি AppCompat থিম ছিল এবং আমার ক্রিয়াকলাপটি AppCompatActivity (অথবা অন্যান্য উত্তরগুলিতে প্রস্তাবিত Activity , তবে আমি এই সমস্যাটি অনুভব করছি। তাই আমি পরিষ্কার, প্রকল্প পুনর্নির্মাণ এবং পুনর্মিলন।

( বিল্ড -> পরিচ্ছন্ন প্রকল্প; বিল্ড -> পুনঃনির্মাণ প্রকল্প; চালানো -> চালান )

এটা মূঢ় বলে মনে হতে পারে, কিন্তু এখন এটা মহান কাজ করে !

শুধু এটা সাহায্য করে আশা করি!


শুধু কর

new AlertDialog.Builder(this)

পরিবর্তে

new AlertDialog.Builder(getApplicationContext())




android-studio