android অ্যান্ড্রয়েড স্টুডিও-দ্বিধান্বিত পদ্ধতি কল getClass()




অ্যান্ড্রয়েড অ্যাপ্লিকেশন ডেভেলপমেন্ট pdf (6)

শুধু fragment.class.getSimpleName () ব্যবহার করুন;

আমি আমার অ্যান্ড্রয়েড অ্যাপ্লিকেশন জন্য অ্যান্ড্রয়েড স্টুডিও ব্যবহার করছি।
আমার কোড কাজ করে এবং কম্পাইল।
সম্প্রতি, আইডিই আমাকে নিম্নলিখিত কোডের getClass এ ত্রুটি (লাল লাইন) দেখায়:

fragment.getClass().getSimpleName()

কিন্তু এখনও অ্যাপ্লিকেশন কম্পাইল এবং রান।
ত্রুটি হল:

Ambiguous method call. Both
getClass () in Object and
getClass () in Object match.

কেউ কি আমাকে এটা ব্যাখ্যা করতে পারে? এবং কোড এখনও চলমান কেন?


Answer #1

সব সম্পর্কিত অ্যান্ড্রয়েড স্টুডিও ইস্যু প্রথম here । এটা কিছু মনোযোগ পেতে পারেন তাই এটি তারকা দয়া করে!

এছাড়াও সম্পর্কিত IntelliJ ইস্যু এখানে

এর জন্য একটি ভাল Object.java.XXX উদাহরণস্বরূপ <sdk>/android-<platform>/java/lang/Object.java Object.java.XXX <sdk>/android-<platform>/java/lang/Object.java হয়। এটি এটিকে দেখার থেকে এটিকে প্রতিরোধ করবে এবং সমস্যা এড়ানো হবে। এটি করে অবশ্যই, আপনি AS এর থেকে অবজেক্টের উৎসে সহজেই নেভিগেট করতে পারবেন না।

এই বাগ সংশোধন করা হবে যখন আপনি তার মূল নাম ফিরে ফাইলটি নামকরণ করতে পারেন ...


Answer #2

আমি মনে করি এটি অ্যান্ড্রয়েড স্টুডিওতে একটি বাগ। আমরা জানি যে, অ্যান্ড্রয়েড স্টুডিও IntelliJ প্ল্যাটফর্ম এবং IntelliJ IDEA কমিউনিটি সংস্করণের বিদ্যমান কার্যকারিতা ভিত্তিক।

গুটাকে জেটব্রেইনগুলির সহযোগিতায় এটি উন্নত করেছে। এবং একই বাগ intelliJ পাশাপাশি ঘটতে রিপোর্ট করা হয়। ত্রুটি রিপোর্ট একবার দেখুন

এই সমস্যাটির একমাত্র getClass() আপনি getClass() কল করেন তা Object নিম্নরূপ:

((Object) this).getClass()

Answer #3

একটি অবজেক্টে আপনার "getClass" কে Cast করুন

((Object) this).getClass()

যারা টুকরা সঙ্গে এই সমস্যা হচ্ছে জন্য, ব্যবহার করুন

((Object) fragment).getClass()

Answer #4

আপনার অ্যাপ্লিকেশন কোড সংশোধন করার পরিবর্তে, আপনি আপনার বাগটি এন্ড্রয়েড SDK এর সোর্স কোডটি প্যাচ করে এড়াতে পারেন।

যখন আপনি getClass () ত্রুটি জুড়ে আসেন, তখন পদ্ধতির ঘোষণাটি (Mac এ ⌘B) যান। এটি $ANDROID_HOME/sources/android-20/java/lang/Object.java$ANDROID_HOME/sources/android-20/java/lang/Object.java মত একটি পথে নেভিগেট করবে। এখন, ইন্টেলিজে বা অ্যান্ড্রয়েড স্টুডিওর মধ্যে:

  • File -> Make File Writable নির্বাচন করে Object.java লিখনযোগ্য করুন File -> Make File Writable । যদি আপনি ফাইলটি সম্পাদনা করার চেষ্টা করেন তবে আপনাকে এটি স্বয়ংক্রিয়ভাবে করতে বলা হতে পারে।
  • Unbounded ওয়াইল্ডকার্ড সরান:

    // http://youtrack.jetbrains.com/issue/IDEA-72835 পাবলিক চূড়ান্ত স্থানীয় ক্লাস getClass () থেকে এড়াতে unbounded ওয়াইল্ডকার্ড (ক্লাস) সরানো হয়েছে।

অ্যান্ড্রয়েড স্টুডিওর নতুন সংস্করণগুলি একটি বাগ থেকে ভুগছে যা আপনাকে লেখার মতো প্রকাশ করার পরেও ফাইলটি সম্পাদনা করতে বাধা দেয়। পরিবর্তে, পাথটি অনুলিপি করুন, Edit -> Copy Path অথবা ⇧⌘C করুন এবং আপনার প্রিয় সম্পাদকটিতে এটি সম্পাদনা করুন।

এই পরিবর্তন উৎস ন্যাভিগেশন কার্যকারিতা সংরক্ষণ করা হবে। অন্যান্য অপশন:

  • আপনি সমগ্র getClass() ঘোষণা মন্তব্য করতে পারেন।
  • আপনি Object.java ফাইলের নামের একটি অ-জাভা এক্সটেনশান যুক্ত করতে পারেন, যেমন Object.java.in

Answer #5

আমি একটি নতুন প্রকল্প তৈরি করার সময় আজ একই সমস্যা মধ্যে দৌড়ে। আমি অন্য কোন প্রকল্পের সাথে তুলনা করেছি যা এই সমস্যাটি ছিল না এবং একটি পার্থক্য খুঁজে পেয়েছে। পুরানো প্রকল্পটি "অ্যান্ড্রয়েড 4.2.2" এর বিরুদ্ধে নির্মিত হয়েছিল এবং নতুনটি ডিফল্টভাবে "Android API 19 প্ল্যাটফর্ম" তে সেট হয়েছিল। আমি এটিকে "অ্যান্ড্রয়েড 4.2.2" তে পরিবর্তন করেছি যা API 17 এর সমান এবং লাল ত্রুটি চিহ্নিতকারী অদৃশ্য হয়ে গেছে। এপিআই 17 আমার প্রোজেক্টের জন্য যথেষ্ট তাই আমি এটিকে এভাবে ছেড়ে দিতে পারি। আমার কোন ধারণা নেই কেন এই সমস্যার সমাধান করে, সৎ হতে।





android-studio