অ্যাপকম্প্যাটঅ্যাক্টিভিটিতে প্রতীক ভিউমোডেলপ্রভাইডারগুলি সমাধান করতে পারে না


122

আরে আমি আমার ভিউমোডেলটি কাজ করার চেষ্টা করছি, তবে এখনও ভাগ্য নেই। অ্যান্ড্রয়েড স্টুডিও ত্রুটি দেখায়Cannot resolve symbol 'ViewModelProviders'

এই বিষয়টিতে আমি যে সমস্ত অন্যান্য প্রশ্ন পেয়েছি তা সংশোধন extends Activityকরছে extends AppCompatActivity, তবে আমি সঠিকটি প্রসারিত করছি। আমি কী মিস করছি তা নিশ্চিত নয় ...
আমার কোডটি এই ইউটিউব ভিডিওটির উপর ভিত্তি করে

MainActivity.java

public class MainActivity extends AppCompatActivity implements
    TileAdapter.TileAdapterOnClickHandler {


private BaseViewModel viewModel;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    //set Toolbar
    Toolbar myToolbar = findViewById(R.id.toolbar);
    setSupportActionBar(myToolbar);


    //initialize viewModel
    viewModel = ViewModelProviders.of(this).get(BaseViewModel.class);

BaseViewModel.java

public class BaseViewModel extends ViewModel {

private Movie[] mMovie;

public void init (Movie[] movies){
    this.mMovie = movies;
}

public Movie[] getMovie() {
    return mMovie;
}

1
"প্রতীক সমাধান করতে পারে না" এর অর্থ হয় হয় আপনার কাছে importবিবৃতি নেই, বা আপনার রয়েছে তবে আপনার গ্রেডল সেটআপে আপনার নির্ভরতা নেই।
কমন্সওয়্যার

9
আপনার android.arch.lifecycle- এর জন্য নির্ভরশীলতা আছে কিনা তা পরীক্ষা করুন : বিল্ড.gradle এ বর্ধিতকরণ
রাজেন্দ্রন

হয় তিনি কিছু লাইব্রেরি ব্যবহার করছেন এবং গ্রেড ফাইলটিতে নির্ভরতা যুক্ত করেছেন যাতে তিনি ভিউমোডেল আমদানি করতে সক্ষম হন বা ViewModelবিভিন্ন প্যাকেজের অধীনে তার কাস্টম ক্লাস রয়েছে এবং সেখান থেকে এটি আমদানি করছেন
অক্ষয় কাটারিয়া

নির্ভরতা হিসাবে এক্সটেনশন ছিল না। ধন্যবাদ @
মুথুকৃষ্ণান

উত্তর:


203

আমার বিল্ডে আমার উভয় নির্ভরতা ছিল না, তাই সমস্যা।

implementation "android.arch.lifecycle:extensions:1.1.0"
implementation "android.arch.lifecycle:viewmodel:1.1.0"

ধন্যবাদ @ মুথুকৃষ্ণান রাজেন্দ্রন


7
@ শেলার আপনি উত্তরটি সঠিক তবে ডক্সটি ভুল। ডকুমেন্টেশনে এটি নির্দিষ্ট করা হয়েছে যে ভিউমোডেল এবং লাইভড্যাট উভয়ই বাস্তবায়নে রয়েছেন "android.arch.lifecycle: এক্সটেনশন: 1.1.1"
প্রীতিশ

2
হুম এই সমাধানটি এখনও আমার সমস্যার সমাধান করেনি। আমার প্রয়োগ রয়েছে 'android.arch.lifecycle: এক্সটেনশানগুলি: 1.1.1' আমার অ্যাপ্লিকেশন গ্রেডে এবং সমস্ত প্রকল্পগুলিতে {সংগ্রহস্থলগুলি oogle গুগল () জেনেটর ()} else আরও কিছু যুক্ত করার দরকার আছে কি?
musterjunk

1
আমি ভিউমোডেলপ্রোভাইডার ক্লাসটি দেখছি তবে এতে .of () পদ্ধতি নেই। ভিউমোডেলপ্রভাইডারগুলি এখনও সংজ্ঞায়িত হয়নি। আমি যদি ম্যাকের উপরে আছি তবে তা গুরুত্বপূর্ণ।
musterjunk

একটি মিনিট এসডিকে বা জাভা 8 সংজ্ঞা রয়েছে যা প্রকল্পে যুক্ত করা দরকার?
musterjunk

কিছু মনে করো না. আপনার গ্রেড ফাইলগুলি প্রদর্শিত না হয়ে থাকে তা নিশ্চিত করুন।
musterjunk

96

আপনি যদি ব্যবহার করেন তবে আপনার এটির androidxদরকার:

implementation 'androidx.lifecycle:lifecycle-extensions:2.1.0'

অন্য কারও এই সমস্যাটির জন্য আপনার অ্যাপ্লিকেশন গ্রেডেও এটি দরকার: প্লাগইন প্রয়োগ করুন: 'androidx.navication.safeargs' এবং এটি আপনার অ্যান্ড্রয়েড গ্রেডে: শ্রেণিপথ "android.arch.navication: নেভিগেশন-নিরাপদ-আরগস-গ্রেড-প্লাগইন : 1.0.0-alpha06 "আপনার যদি এই জিনিসগুলি রাখার সমস্যা হয় তবে গুগল থেকে অ্যান্ড্রয়েড-সূর্যমুখী ডেমো অ্যাপ্লিকেশনটি দেখুন।
findusl

1
সর্বশেষতম অ্যান্ড্রয়েড সংস্করণ বিকাশকারীদের
user2301281

কী বোকামি! ভিউমোডেলপ্রাইডার নির্ভরতা ছাড়াই উপলব্ধ তবে ভিউমোডেলপ্রভাইডারদের জন্য আমাদের একটি অতিরিক্ত নির্ভরতা প্রয়োজন।
রাহুল রাস্তোগি

15

আপনি যদি ২২ বা ততোধিক উচ্চতর সংকলিত এসডিকে সংস্করণ ব্যবহার করছেন তবে আপনাকে পেতে একক ডিপেন্ডেসি যুক্ত করতে হবে ViewModelএবং andLiveData

dependencies {
    //...
    def lifecycle_version = "1.1.1"

    // ViewModel and LiveData
    implementation "android.arch.lifecycle:extensions:$lifecycle_version"
}

আপনার সর্বশেষতম সংস্করণটি জানতে আপনি maven.google.com/web/index.html এandroid.arch.lifecycle:extensions অনুসন্ধান করতে পারেন এবং সর্বশেষ সংস্করণটি দেখতে পারেনextensions
সঞ্জীব

11

android.arch.lifecycle: এক্সটেনশানগুলি হ্রাস ব্যবহার is

def lifecycle_version = "2.2.0"
implementation "androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version"
implementation "androidx.lifecycle:lifecycle-livedata:$lifecycle_version"

এর মতো ভিউ মডেলের উদাহরণ তৈরি করুন :

জাভা

Yourclass obj = new ViewModelProvider(context).get(ClassViewModel.class);

Kotlin

var obj = ViewModelProvider(context).get(ClassViewModel::class.java)

5

আপনার প্রকল্পের build.gradle এ আপনার লাইব্রেরি যুক্ত করা উচিত

Def lifecycle_version = "2.0.0"

// ViewModel and LiveData
implementation "androidx.lifecycle:lifecycle-extensions:$lifecycle_version"


5

আমার ক্ষেত্রে (অ্যান্ড্রয়েড স্টুডিও ৩.6.৩) AppCompatActivityসফলভাবে করতে:

MyViewModel myViewModel = new ViewModelProvider(this).get(MyViewModel.class);

এটি উভয় প্রয়োজন:

implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'

(একা lifecycle-extentionsযথেষ্ট ছিল না)


3

বিল্ড.gradle ফাইলে, নির্ভরতা ব্লকে এই লাইনগুলি যুক্ত করুন

dependencies {
...
def lifecycle_version = "1.1.1"
// ViewModel and LiveData
implementation "android.arch.lifecycle:extensions:$lifecycle_version"
//if not using java 8,use the following line
annotationProcessor "android.arch.lifecycle:compiler:$lifecycle_version"
//if using java 8,ignore above line and add the following line
implementation "android.arch.lifecycle:common-java8:$lifecycle_version"
...
}

বিল্ড.gradle ফাইলের নমুনা চিত্র


2

ব্যবহার androixলাইব্রেরি

পরিবর্তন

implementation 'com.android.support:appcompat-v7:28.0.0'

প্রতি

implementation 'androidx.appcompat:appcompat:1.1.0-alpha03'

তুমি ব্যবহার করতে পার

Refactor>Migrate to AndroidX

2

বাস্তবায়নে "androidx.lifecycle: lifecycle-Exptions: 2.2.0" এবং আপ ভিউমোডেলপ্রভাইডারগুলি হ্রাস করা হয়েছে, ব্যবহার করুন

viewModel = ViewModelProvider(this).get(BaseViewModel.class);

বা কোটলিনে

viewModel = ViewModelProvider(this).get(BaseViewModel::class.java);

পরিবর্তে

viewModel = ViewModelProviders.of(this).get(BaseViewModel.class);

2

- ' ভিউমোডেলপ্রভাইডার্স ' এখন হ্রাস করা হয়েছে

  • এখন বিকল্প
  • জাবাতে

viewModel = ViewModelProvider(this).get(BaseViewModel.class);

  • কোটলিনে

var viewModel = ViewModelProvider(this).get(BaseViewModel::class.java)

রেফস - https://developer.android.com/references/androidx/lifecycle/ ভিউমোডেলপ্রভাইডার


1

আমার অ্যাপে (জাভা) আগে ভাল কাজ করে

loginViewModel = ViewModelProviders.of(this, new LoginViewModelFactory())
                .get(LoginViewModel.class);

পরিবর্তন

loginViewModel = new ViewModelProvider(this,new LoginViewModelFactory()).get(LoginViewModel.class);

আশা করি এটি সাহায্য করতে পারে


1

আমার ক্ষেত্রে আমি নীচের ইস্যুটির মুখোমুখি হচ্ছি যেমন:

** androidx.lifecycle অ্যাক্সেস করতে পারে না hasএটি কোনও ডিফল্ট ভিউ মডেলপ্রোভাডার ফ্যাক্টরি যা এখানে চিত্র বর্ণনা লিখুনআপনার শ্রেণীর নামের একটি সাবক্লাস, আপনার মডিউল শ্রেণিপথটি আপনার মডেলের বিরোধিতাপূর্ণ নির্ভরতা পরীক্ষা করে দেখুন **

আমি আমার প্রোজেক্ট বিল্ডড্র্যাডলে নীচে নির্ভরতা যুক্ত করেছি

def lifecycle_version = "2.2.0"

implementation "androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version"

implementation "androidx.lifecycle:lifecycle-extensions:$lifecycle_version"

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


0

আমারও একই সমস্যা ছিল। অন্য কোনও সমাধান আমাকে সাহায্য করেনি।

আমি বুঝতে পারি যে আমি এর import androidx.lifecycle.ViewModelProvider;পরিবর্তে ব্যবহার করছি import androidx.lifecycle.ViewModelProviders;

সুতরাং আপনি ব্যবহার করছেন তা নিশ্চিত করুন import androidx.lifecycle.ViewModelProviders;। এটি একটি ViewModelProvidersসঙ্গে s

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