0

my Activity code

    public class SearchActivity2 extends AppCompatActivity {
        androidx.appcompat.widget.SearchView ser;
        RecyclerView recyclerView2;
      NewsViewModel newsviewmodelsearch;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_search2);
    
           ser=findViewById(R.id.search_view2);
           recyclerView2=findViewById(R.id.search_recycler2);
    
          /*  newsviewmodelsearch = new ViewModelProvider(this).get(NewsViewModel.class);
            newsviewmodelsearch.init(this.getApplication());*/
    
            newsviewmodelsearch=new ViewModelProvider(this).get(NewsViewModel.class);
           /* newsviewmodelsearch.searchAnewlist.observe(this, new Observer<ArrayList<NewsModel>>() {
                @Override
                public void onChanged(ArrayList<NewsModel> newsModels) {
                    Log.v("tagsearch",""+newsModels);
                }
            });
    
    
            final androidx.appcompat.widget.SearchView searchView=findViewById(R.id.search_view);
            searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
                @Override
                public boolean onQueryTextSubmit(String query) {
                    newsviewmodelsearch.searrchNews(query);
    
                    return false;
                }
    
                @Override
                public boolean onQueryTextChange(String newText) {
                    return false;
                }
            });*/
}

ViewModel

     public class NewsViewModel extends ViewModel {
    
        public Repository repository;
        private String mQuery;
        public Application application;
    
        @ViewModelInject
        public NewsViewModel(Repository repository) {
            this.repository = repository;
        }
        public void init(Application application){
            repository = new Repository(application);
            //mAllWords = repository.getAllWords();
        }
    
    
        public MutableLiveData<ArrayList<NewsModel>> newsList = new MutableLiveData<>();
    
        public MutableLiveData<ArrayList<NewsModel>> EuropenewsList = new MutableLiveData<>();
    
        public LiveData<List<NewsModel>> ReadLaterList = null;
    
        public MutableLiveData<ArrayList<NewsModel>> searchAnewlist = new MutableLiveData<>();
    
    
    
        public LiveData<List<NewsModel>> getReadLaterList() {
            return ReadLaterList;
        }
    
    
            public void getNews() {
            repository.getNews()
                    .subscribeOn(Schedulers.io())
                    .observeOn(AndroidSchedulers.mainThread())
                    .subscribe(result -> newsList.setValue(result.getArticles()),
                            error -> Log.e("ViewModel", "" + error.getMessage()));
    
    
        }
    
    
        public void getEuropeNews() {
            repository.getEuropeNews()
                    .subscribeOn(Schedulers.io())
                    .observeOn(AndroidSchedulers.mainThread())
                    .subscribe(result -> EuropenewsList.setValue(result.getArticles()),
                            error -> Log.e("ViewModel", "" + error.getMessage()));
    
    
        }
    
        public void searrchNews(String query) {
            repository.searchNews(query)
                    .subscribeOn(Schedulers.io())
                    .observeOn(AndroidSchedulers.mainThread())
                    .subscribe(result -> searchAnewlist.setValue(result.getArticles()),
                            error -> Log.e("ViewModel", "" + error.getMessage()));
    
    
        }
    
    
     
    
    
        public void InsertAnew(NewsModel newsModel) {
            repository.InsertAnew(newsModel);
        }
    
        public void DaleteAnew(String newtitle) {
            repository.DeleteAnew(newtitle);
        }
    
        public void getReadlaterNews() {
            ReadLaterList = repository.getRlatter();
    
        }
    
    }

Error Unable to start activity ComponentInfo{com.example.myapplication/com.example.myapplication.SearchActivity2}: java.lang.RuntimeException: Cannot create an instance of class com.example.myapplication.viewmodel.NewsViewModel at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3449)

  • You've cut off the part of the stack trace that will tell you what the problem is. Read this: https://stackoverflow.com/q/23353173/506796 – Tenfour04 Mar 04 '22 at 20:48
  • Which version of Hilt are you using? Recent versions annotate the ViewModel class with `@HiltViewModel` and the constructor with `@Inject` – Nitrodon Mar 04 '22 at 21:01
  • // Hilt implementation "com.google.dagger:hilt-android:2.28-alpha" annotationProcessor 'com.google.dagger:hilt-android-compiler:2.28-alpha' implementation 'androidx.hilt:hilt-lifecycle-viewmodel:1.0.0-alpha01' annotationProcessor 'androidx.hilt:hilt-compiler:1.0.0-alpha01' – Abdulrahman Mar 04 '22 at 21:49
  • guys i solved it i just forgot the @Androidentry point Annotation – Abdulrahman Mar 07 '22 at 02:52

0 Answers0