Giter VIP home page Giter VIP logo

ud845-pets's Introduction

Pets App

This app displays a list of pets and their related data that the user inputs. Used in a Udacity course in the Android Basics Nanodegree by Google.

How to use this repository

  • Fork this repository to your Github account.
  • Open Android Studio 3.2.x+ in your local machine.
  • We recommend you to use the Version Control System(VCS) in your Android Studio 3.2.x+ IDE to clone the repository directly in your IDE.
  • You may have to use the File > Settings > Version Control (VCS) menu option to set up Git settings.
  • Refer to this IntelliJ document for details.
  • Working with VCS will make it easy for you to push your updates or switch between branches to your remote repository in Github.

Prerequisites

  • Android Studio 3.2.1 or higher
  • Android SDK API v32 (For AndroidX dependencies, the min compileSdkVersion version is 31)
  • minSdkVersion 21
  • Supports up to Android 12
  • Gradle 7.2.0

To run app in an Android Virtual Device (AVD), we have used the following configuration:

  • Pixel 4 Mobile device with x86 System image
  • API level 31
  • Android 12

Note - Gradle Updates

The Android Studio build system depends on Gradle and its plugins. The Gradle and its plugins have to be updated separately of Android Studio. For the updated version, refer to the following updated files: ~/build.gradle (project) file ~/app/build.graddle(: app) file ~/gradle/wrapper/gradle-wrapper.properties file You can refer anytime to the latest Android Gradle plugin release notes for the newest version of plugins.

Getting Started

This sample uses the Gradle build system. To build this project, use the "gradlew build" command or use "Import Project" in Android Studio.

Patches are encouraged, and may be submitted by forking this project and submitting a pull request through GitHub. Please see CONTRIBUTING.md for more details.

License

Copyright 2016 The Android Open Source Project, Inc.

Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

ud845-pets's People

Contributors

sudkul avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ud845-pets's Issues

Getting this code working on first start

SO, you've downloaded the code and got a million error messages. Yup, this is not being maintained, luckily I got your back I think. So, rather than just importing their project, it works better to start a new empty project and paste in the relevant stuff. So once you've started a new empty project with the wizard, go ahead and copy the "main" folder from
"...AndroidStudioProjects\ud845-Pets-starting-point\app\src"
to your new folder (mine is "AndroidStudioProjects\pets\app\src").

Ok, good start but it still probably won't run. First, lets do the java files. In catalog activity, add this to the imports:
import com.google.android.material.floatingactionbutton.FloatingActionButton;
and remove the unused code (AS should highlight it).

In the editor activity add these to the imports:

import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.NavUtils;

And again remove the unused code.

Next we'll do the gradle file, open up build.gradle (:app) and add this implementation down at the bottom:
implementation "com.google.android.material:material:1.1.0"

Finally, in activity_catalogue.xml you will need need to change the
<android.support.design.widget.FloatingActionButton
to:
<com.google.android.material.floatingactionbutton.FloatingActionButton

Ok, now it should work. If not, it should be almost there. Post any additional steps below.

Unable to load class 'javax.xml.bind.annotation.XmlSchema'.

A problem occurred configuring project ':app'.

Failed to notify project evaluation listener.
javax/xml/bind/annotation/XmlSchema

  • Try:
    Run with --info or --debug option to get more log output. Run with --scan to get full insights.

  • Exception is:
    org.gradle.api.ProjectConfigurationException: A problem occurred configuring project ':app'.
    at org.gradle.configuration.project.LifecycleProjectEvaluator.addConfigurationFailure(LifecycleProjectEvaluator.java:109)
    at org.gradle.configuration.project.LifecycleProjectEvaluator.onAfterEvaluateFailure(LifecycleProjectEvaluator.java:105)
    at org.gradle.configuration.project.LifecycleProjectEvaluator.notifyAfterEvaluate(LifecycleProjectEvaluator.java:87)
    at org.gradle.configuration.project.LifecycleProjectEvaluator.doConfigure(LifecycleProjectEvaluator.java:72)
    at org.gradle.configuration.project.LifecycleProjectEvaluator.access$100(LifecycleProjectEvaluator.java:37)
    at org.gradle.configuration.project.LifecycleProjectEvaluator$ConfigureProject.run(LifecycleProjectEvaluator.java:125)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:317)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:309)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:185)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:97)
    at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
    at org.gradle.configuration.project.LifecycleProjectEvaluator.evaluate(LifecycleProjectEvaluator.java:52)
    at org.gradle.api.internal.project.DefaultProject.evaluate(DefaultProject.java:677)
    at org.gradle.api.internal.project.DefaultProject.evaluate(DefaultProject.java:138)
    at org.gradle.execution.TaskPathProjectEvaluator.configure(TaskPathProjectEvaluator.java:35)
    at org.gradle.execution.TaskPathProjectEvaluator.configureHierarchy(TaskPathProjectEvaluator.java:62)
    at org.gradle.configuration.DefaultBuildConfigurer.configure(DefaultBuildConfigurer.java:41)
    at org.gradle.initialization.DefaultGradleLauncher$ConfigureBuild.run(DefaultGradleLauncher.java:262)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:317)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:309)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:185)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:97)
    at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
    at org.gradle.initialization.DefaultGradleLauncher.configureBuild(DefaultGradleLauncher.java:175)
    at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:132)
    at org.gradle.initialization.DefaultGradleLauncher.executeTasks(DefaultGradleLauncher.java:115)
    at org.gradle.internal.invocation.GradleBuildController$1.call(GradleBuildController.java:77)
    at org.gradle.internal.invocation.GradleBuildController$1.call(GradleBuildController.java:74)
    at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:152)
    at org.gradle.internal.work.StopShieldingWorkerLeaseService.withLocks(StopShieldingWorkerLeaseService.java:38)
    at org.gradle.internal.invocation.GradleBuildController.doBuild(GradleBuildController.java:96)
    at org.gradle.internal.invocation.GradleBuildController.run(GradleBuildController.java:74)
    at org.gradle.tooling.internal.provider.runner.ClientProvidedPhasedActionRunner.run(ClientProvidedPhasedActionRunner.java:61)
    at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
    at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
    at org.gradle.tooling.internal.provider.ValidatingBuildActionRunner.run(ValidatingBuildActionRunner.java:32)
    at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner$3.run(RunAsBuildOperationBuildActionRunner.java:47)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:317)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:309)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:185)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:97)
    at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
    at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner.run(RunAsBuildOperationBuildActionRunner.java:43)
    at org.gradle.tooling.internal.provider.SubscribableBuildActionRunner.run(SubscribableBuildActionRunner.java:51)
    at org.gradle.launcher.exec.InProcessBuildActionExecuter$1.transform(InProcessBuildActionExecuter.java:50)
    at org.gradle.launcher.exec.InProcessBuildActionExecuter$1.transform(InProcessBuildActionExecuter.java:46)
    at org.gradle.composite.internal.DefaultRootBuildState.run(DefaultRootBuildState.java:65)
    at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:46)
    at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:32)
    at org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute(BuildTreeScopeBuildActionExecuter.java:39)
    at org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute(BuildTreeScopeBuildActionExecuter.java:25)
    at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:80)
    at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:53)
    at org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute(ServicesSetupBuildActionExecuter.java:62)
    at org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute(ServicesSetupBuildActionExecuter.java:34)
    at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:36)
    at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:25)
    at org.gradle.tooling.internal.provider.ParallelismConfigurationBuildActionExecuter.execute(ParallelismConfigurationBuildActionExecuter.java:43)
    at org.gradle.tooling.internal.provider.ParallelismConfigurationBuildActionExecuter.execute(ParallelismConfigurationBuildActionExecuter.java:29)
    at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:59)
    at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:31)
    at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:59)
    at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:44)
    at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:46)
    at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:30)
    at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:67)
    at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
    at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:37)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
    at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:26)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
    at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:34)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
    at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:74)
    at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:72)
    at org.gradle.util.Swapper.swap(Swapper.java:38)
    at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:72)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
    at org.gradle.launcher.daemon.server.exec.LogAndCheckHealth.execute(LogAndCheckHealth.java:55)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
    at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:62)
    at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
    at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:82)
    at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
    at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:50)
    at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:295)
    at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
    at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
    at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
    Caused by: org.gradle.internal.event.ListenerNotificationException: Failed to notify project evaluation listener.
    at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:86)
    at org.gradle.internal.event.BroadcastDispatch$CompositeDispatch.dispatch(BroadcastDispatch.java:324)
    at org.gradle.internal.event.BroadcastDispatch$CompositeDispatch.dispatch(BroadcastDispatch.java:234)
    at org.gradle.internal.event.ListenerBroadcast.dispatch(ListenerBroadcast.java:140)
    at org.gradle.internal.event.ListenerBroadcast.dispatch(ListenerBroadcast.java:37)
    at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
    at com.sun.proxy.$Proxy35.afterEvaluate(Unknown Source)
    at org.gradle.configuration.project.LifecycleProjectEvaluator$1.execute(LifecycleProjectEvaluator.java:83)
    at org.gradle.configuration.project.LifecycleProjectEvaluator$1.execute(LifecycleProjectEvaluator.java:80)
    at org.gradle.api.internal.project.DefaultProject.stepEvaluationListener(DefaultProject.java:1393)
    at org.gradle.configuration.project.LifecycleProjectEvaluator.notifyAfterEvaluate(LifecycleProjectEvaluator.java:80)
    ... 89 more
    Caused by: java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema
    at com.android.repository.api.SchemaModule$SchemaModuleVersion.(SchemaModule.java:162)
    at com.android.repository.api.SchemaModule.(SchemaModule.java:80)
    at com.android.sdklib.repositoryv2.AndroidSdkHandler.(AndroidSdkHandler.java:69)
    at com.android.builder.sdk.DefaultSdkLoader.init(DefaultSdkLoader.java:115)
    at com.android.builder.sdk.DefaultSdkLoader.getSdkInfo(DefaultSdkLoader.java:97)
    at com.android.build.gradle.internal.SdkHandler.initTarget(SdkHandler.java:125)
    at com.android.build.gradle.BasePlugin.ensureTargetSetup(BasePlugin.java:680)
    at com.android.build.gradle.BasePlugin.createAndroidTasks(BasePlugin.java:617)
    at com.android.build.gradle.BasePlugin$10$1.call(BasePlugin.java:572)
    at com.android.build.gradle.BasePlugin$10$1.call(BasePlugin.java:569)
    at com.android.builder.profile.ThreadRecorder$1.record(ThreadRecorder.java:55)
    at com.android.builder.profile.ThreadRecorder$1.record(ThreadRecorder.java:47)
    at com.android.build.gradle.BasePlugin$10.execute(BasePlugin.java:568)
    at com.android.build.gradle.BasePlugin$10.execute(BasePlugin.java:565)
    at org.gradle.internal.event.BroadcastDispatch$ActionInvocationHandler.dispatch(BroadcastDispatch.java:91)
    at org.gradle.internal.event.BroadcastDispatch$ActionInvocationHandler.dispatch(BroadcastDispatch.java:80)
    at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:42)
    at org.gradle.internal.event.BroadcastDispatch$SingletonDispatch.dispatch(BroadcastDispatch.java:230)
    at org.gradle.internal.event.BroadcastDispatch$SingletonDispatch.dispatch(BroadcastDispatch.java:149)
    at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:58)
    ... 99 more
    Caused by: java.lang.ClassNotFoundException: javax.xml.bind.annotation.XmlSchema
    ... 119 more

Deprecated import classes in Lesson 4-10 causing errors

So after alot of hair pulling I found a problem related to the import classes used in this lesson. An error is thrown from getLoaderManager().initLoader(... , this). I'm not sure what the actual solution is going forward, but for the moment using the deprecated import classes shown below fixes the error.

So change these (android suggested) import classes:

import androidx.loader.app.LoaderManager;
import androidx.loader.content.CursorLoader;
import androidx.loader.content.Loader;

To these deprecated import classes:

import android.app.LoaderManager;
import android.content.CursorLoader;
import android.content.Loader;

Error:(21, 0) Could not find method android() for arguments

building project...

Error:(21, 0) Could not find method android() for arguments
[build_7x4tye6oked1jiwzuyg64bzrc$_run_closure3@74ce768d] on root project 'ud845-Pets'. Open File

// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.1.2'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }}
allprojects {
    repositories {
        jcenter()
    }
}
task clean(type: Delete) {
    delete rootProject.buildDir
}

android {
    compileSdkVersion 17
    buildToolsVersion '23.0.3'
}
dependencies {
}

Importing differences

I have the same imports that the ones showed here but in the lesson it says that i should have imported
import android.support.v7.app.LoaderManager; import android.support.v7.content.CursorLoader; import android.support.v7.content.Loader; import android.support.v7.widget.SimpleCursorAdapter;
but when i do, i get the "cannot resolve symbol " error.

I think i should compile something in the gradle files, but i'm not sure, and also I don't know how exactly.
Would anyone help me with this?

Thanks in advance.

Fail to sync Gradle project

Plz do help...

Error:Failed to open zip file.
Gradle's dependency cache may be corrupt (this sometimes occurs after a network connection timeout.)
Re-download dependencies and sync project (requires network)
Re-download dependencies and sync project (requires network)

even after changing the build.gradle

CatalogActivity

when i use this code line:getLoaderManager().initLoader(PET_LOADER, null, this);
the Android Studio shows the message like:

"'Wrong 3rd argument type. Found: 'com.example.pets.CatalogActivity', required: 'android.app.LoaderManager.LoaderCallbacks<java.lang.Object>' less...
Inspection info:
initLoader() in LoaderManager cannot be applied to:"

i don't know how to deal with it.
Can anyone help me please?thanks.

Unable to start activity

E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.aaachat.activity, PID: 29361
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.aaachat.activity/com.aaachat.activity.MainActivity}: java.lang.ClassCastException: com.google.android.material.floatingactionbutton.FloatingActionButton cannot be cast to android.widget.TextView
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3516)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3655)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:151)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:111)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2218)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:238)
at android.app.ActivityThread.main(ActivityThread.java:7835)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:984)
Caused by: java.lang.ClassCastException: com.google.android.material.floatingactionbutton.FloatingActionButton cannot be cast to android.widget.TextView
at com.aaachat.activity.MainActivity.onCreate(MainActivity.java:52)
at android.app.Activity.performCreate(Activity.java:7967)
at android.app.Activity.performCreate(Activity.java:7956)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1307)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3487)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3655) 
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83) 
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:151) 
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:111) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2218) 
at android.os.Handler.dispatchMessage(Handler.java:107) 
at android.os.Looper.loop(Looper.java:238) 
at android.app.ActivityThread.main(ActivityThread.java:7835) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:984) 
I/Process: Sending signal. PID: 29361 SIG: 9

IllegalArgumentException doesnt work if name==null or breed==null

String name = values.getAsString(PetContract.PetEntry.COLUMN_PET_NAME);
if (name==null) {
throw new IllegalArgumentException("Pet requires a name");
}
String breed = values.getAsString(PetContract.PetEntry.COLUMN_PET_BREED);
if (breed==null) {
throw new IllegalArgumentException("Pet requires a breed");
}

here IllegalArgumentException will never be thrown as getString() in Editor activity never returns a null..it gives empty string if the edittext filed is empty

so we will have to check if name.isEmpty()||breed.isEmpty() if we want to throw an exception

select * statement not showing expected table data

i see the following output in terminal instead of expected table values that were given in EditorActivity. I even tried the same on code provided by you but the output is same.

sqlite> select * from pets;
1|android.support.v7.widget.AppCompatEditText{42a933b0 VFED..CL ........ 6,0-288,68 #7f0d006e app:id/edit_pet_name}|android.support.v7.widget.AppCo
mpatEditText{42a99ac8 VFED..CL ........ 6,68-288,136 #7f0d006f app:id/edit_pet_breed}|1|android.support.v7.widget.AppCompatEditText{42a1db80 VFED..
CL .F...... 6,0-288,68 #7f0d0073 app:id/edit_pet_weight}

insert statement shows normal expected values.(doesn't return -1).

Unable to start activity ComponentInfo{com.example.android.pets/com.example.android.pets.CatalogActivity}

AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.android.pets, PID: 6577
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.android.pets/com.example.android.pets.CatalogActivity}: android.view.InflateException: Binary XML file line #27: Binary XML file line #27: Error inflating class android.support.design.widget.FloatingActionButton
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2984)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3045)
at android.app.ActivityThread.-wrap14(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1642)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6776)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1496)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1386)
Caused by: android.view.InflateException: Binary XML file line #27: Binary XML file line #27: Error inflating class android.support.design.widget.FloatingActionButton
Caused by: android.view.InflateException: Binary XML file line #27: Error inflating class android.support.design.widget.FloatingActionButton
Caused by: java.lang.ClassNotFoundException: Didn't find class "android.support.design.widget.FloatingActionButton" on path: DexPathList[[zip file "/data/app/com.example.android.pets-1/base.apk"],nativeLibraryDirectories=[/data/app/com.example.android.pets-1/lib/arm, /system/lib, /vendor/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass(ClassLoader.java:380)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
at android.view.LayoutInflater.createView(LayoutInflater.java:616)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:794)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:734)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:865)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:828)
at android.view.LayoutInflater.inflate(LayoutInflater.java:525)
at android.view.LayoutInflater.inflate(LayoutInflater.java:427)
at android.view.LayoutInflater.inflate(LayoutInflater.java:378)
at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:545)
at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:161)
at com.example.android.pets.CatalogActivity.onCreate(CatalogActivity.java:37)
at android.app.Activity.performCreate(Activity.java:6955)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1126)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2927)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3045)
at android.app.ActivityThread.-wrap14(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1642)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6776)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1496)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1386)

Clicking the FAB makes the app crash.

The loader should be initialized inside the else statement
This should be used:

Intent intent = getIntent();

        mCurrentPetUri = intent.getData();

        if (mCurrentPetUri == null) {
            setTitle(getString(R.string.editor_activity_title_new_pet));

        } else {
            setTitle(getString(R.string.editor_activity_title_edit_pet));
            getLoaderManager().initLoader(1, null, this);
        }

Instead of this:

Intent intent = getIntent();

 mCurrentPetUri = intent.getData();

        if (mCurrentPetUri == null) {
            setTitle(getString(R.string.editor_activity_title_new_pet));

        } else {
            setTitle(getString(R.string.editor_activity_title_edit_pet));
        }
getLoaderManager().initLoader(1, null, this);

table pets has no column named weight

Error inserting name=Toto gender=1 weight=7 breed=Terrier
android.database.sqlite.SQLiteException: table pets has no column named weight (code 1): , while compiling: INSERT INTO pets(name,gender,weight,breed) VALUES (?,?,?,?)

Caused By : SQL(query) error or missing database. (no such table: (code 1))

I have an error When I click the button to insert the data

this from main activity

`**b1.setOnClickListener(new View.OnClickListener() {
@OverRide
public void onClick(View v) {
EditText price = (EditText) findViewById(R.id.item_prize);
EditText quantity = (EditText) findViewById(R.id.quantity);

                String hasprice= price.getText().toString();

                String hasQuantity = quantity.getText().toString();

                double finalprice= 0;
                try {
                    finalprice = Double.parseDouble(hasprice);
                } catch (Exception e) {
                    e.printStackTrace();
                    Toast toast = Toast.makeText(MainActivity.this,"You must put The number for your Item's Price",Toast.LENGTH_SHORT);
                    toast.show();
                }

                double finalQuantity = 0;
                try {
                    finalQuantity = Integer.parseInt(hasQuantity);
                } catch (Exception e) {
                    e.printStackTrace();
                    Toast toast = Toast.makeText(MainActivity.this,"You must put The number for your Item's 
                    Quantity",Toast.LENGTH_LONG);
                    toast.show();
                }

                mHasTotal = addHasprice(finalprice, finalQuantity);
                mFinalTotal = addFinalPrice(finalprice, finalQuantity);
                quantityItems = addQuantity(finalQuantity);

                if (mHasTotal == 0) {
                    b1.setEnabled(true);
                    b2.setEnabled(false);
                    b3.setEnabled(false);
                } else {
                    b1.setEnabled(false);
                    b2.setEnabled(true);
                    b3.setEnabled(true);
                }

                Double finalTotal = Double.parseDouble(fixPrice.format(mHasTotal));
                int finalItems = totalItems(quantityItems);

                storePrice();
                storeItems();

                if (advancedBill.isChecked() == true) {
                    mDataBaseHelper.addBill(finalItems, finalTotal);
                } else {
                    return;
                }

                displaySreen(String.valueOf(finalTotal));
                displayItems(String.valueOf(finalItems));

                price.setText(null);
                quantity.setText(null);
            }
        });
    }**`

And this codes from DatabaseHelper class

`**public static final String DATABASE_NAME = "bill.db";
public static final int DATABASE_VERSION = 1;

public static final String TABLE_BILL = "billprice";
public static final String COL1_ITEMPRICE = "itemprice";
public static final String COL2_ITEMQUANTITY = "itemquantity";

public databaseHelper(Context context) {
    super(context, DATABASE_NAME, null, DATABASE_VERSION);
}

@Override
public void onCreate(SQLiteDatabase db) {
    String Query = "CREATE TABLE " + TABLE_BILL + "( "
            + COL2_ITEMQUANTITY + " INTEGER,"
            + COL1_ITEMPRICE + " INTEGER)";
    db.execSQL(Query);
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_BILL);
    onCreate(db);
}

public boolean addBill (int itemQuantity, double itemPrice) {
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues values = new ContentValues();
    values.put(COL1_ITEMPRICE, itemPrice);
    values.put(COL2_ITEMQUANTITY, itemQuantity);
    
    Long result  = db.insert(DATABASE_NAME, null, values);

    if(result == -1) {
        return false;
    } else {
        return true;
    }
    
}**`

And causes this error

Error Code : 1 (SQLITE_ERROR)
Caused By : SQL(query) error or missing database.
(no such table: bill.db (code 1): , while compiling: INSERT INTO bill.db(itemquantity,itemprice) VALUES (?,?))

Empty weight parseInt error

In the EditorActivity code:

String weightString = mWeightEditText.getText().toString().trim();
int weight = Integer.parseInt(weightString);

gives an error if Pet without weight is added. The error is related to empty string on parseInt and not the intended error code.

E/SQLiteDatabase: Error inserting data

The code, as is, runs fine on my emulator. However, when I click 'Insert Dummy Data' it fails to insert the data in the database. The following is the error I get on my logcat:

3-23 16:32:25.059 5771-5771/com.example.android.pets E/SQLiteDatabase: Error inserting name=Toto gender=1 weight=7 breed=Terrier
android.database.sqlite.SQLiteException: table pets has no column named gender (code 1): , while compiling: INSERT INTO pets(name,gender,weight,breed) VALUES (?,?,?,?)

Any help would be greatly appreciated

How to manage SQLite database , query method with Particular row id

sUrimatcher.match(uri); is returning -1.
It should return 101.
Can you help me with that?

PetProvider.java-:

package com.example.android.pets.data;

import android.content.ContentProvider;
import android.content.ContentUris;
import android.content.ContentValues;
import android.content.UriMatcher;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.net.Uri;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.text.Selection;
import android.util.Log;
import android.widget.Toast;

public class PetsProvider extends ContentProvider {
private PetsDbHelper mDbHelper;
private static final UriMatcher sUriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
private static final int PETS = 100;
private static final int PET_ID = 101;

static {
    sUriMatcher.addURI(PetsContract.CONTENT_AUTHORITY, PetsContract.PATH_PETS, PETS);
}

@Override
public boolean onCreate() {
    mDbHelper = new PetsDbHelper(getContext());
    return false;
}

@Nullable
@Override
public Cursor query(@NonNull Uri uri, @Nullable String[] projection, @Nullable String selection, @Nullable String[] selectionArgs, @Nullable String sortOrder) {
    SQLiteDatabase database = mDbHelper.getReadableDatabase();

    Cursor cursor;
    Log.v(String.valueOf(this),"uri="+uri);
    int match = sUriMatcher.match(uri);

    switch (match) {
        case PETS:
            cursor = database.query(PetsContract.PetsEntry.TABLE_NAME, projection, selection, selectionArgs, null, null, null);
            break;
        case PET_ID:
            selection = PetsContract.PetsEntry._ID + "=?";
            selectionArgs = new String[]{String.valueOf(ContentUris.parseId(uri))};
            cursor = database.query(PetsContract.PetsEntry.TABLE_NAME, projection, selection, selectionArgs, null, null, null);
            break;
            default:
            throw new IllegalArgumentException("unknown Uri " + uri);
    }
    // Set the notification URI on the Cursor
    // So we know that content URI the Cursor was created for
    // If the data at this URI changes ,then we know we need to update the Cursor.
    cursor.setNotificationUri(getContext().getContentResolver(),uri);
    return cursor;
}

@Nullable
@Override
public String getType(@NonNull Uri uri) {
    int match = sUriMatcher.match(uri);
    switch (match) {
        case PETS:
            return PetsContract.PetsEntry.CONTENT_LIST_TYPE;
        case PET_ID:
            return PetsContract.PetsEntry.CONTENT_ITEM_TYPE;
        default:
            throw new IllegalArgumentException("unknown URI " + uri);
    }


}

@Nullable
@Override
public Uri insert(@NonNull Uri uri, @Nullable ContentValues values) {

    int match = sUriMatcher.match(uri);
    switch (match) {
        case PETS:
            return insertPets(uri, values);
        default:
            throw new IllegalArgumentException("insertion not possible " + uri);
    }
}

private Uri insertPets(Uri uri, ContentValues values) {
    String name = values.getAsString(PetsContract.PetsEntry.COLUMN_PET_NAME);
    if (name == null) {
        throw new IllegalArgumentException("Name of the pet can't be null");
    }
    int weight = values.getAsInteger(PetsContract.PetsEntry.COLUMN_PET_WEIGHT);
    if (weight < 0) {
        throw new IllegalArgumentException("Weight can't be negative");
    }
    SQLiteDatabase database = mDbHelper.getWritableDatabase();
    long row = database.insert(PetsContract.PetsEntry.TABLE_NAME, null, values);
    if (row == -1) {//Toast.makeText(getContext(),"Pet Saved",Toast.LENGTH_SHORT).show();
        Log.e(String.valueOf(this), "Failed to insert " + uri);
    }

    //Notify all Listeners that the data has changed for the pet content URI
    getContext().getContentResolver().notifyChange(uri,null);
    return ContentUris.withAppendedId(uri, row);
}


@Override
public int delete(@NonNull Uri uri, @Nullable String selection, @Nullable String[] selectionArgs) {
    SQLiteDatabase database = mDbHelper.getWritableDatabase();

    final int match = sUriMatcher.match(uri);
    switch (match) {
        case PETS:
            // Delete all rows that match the selection and selection args
            return database.delete(PetsContract.PetsEntry.TABLE_NAME, selection, selectionArgs);
        case PET_ID:
            // Delete a single row given by the ID in the URI
            selection = PetsContract.PetsEntry._ID + "=?";
            selectionArgs = new String[]{String.valueOf(ContentUris.parseId(uri))};
            int rowsDeleted = database.delete(PetsContract.PetsEntry.TABLE_NAME, selection, selectionArgs);
            if(rowsDeleted!=0)
                getContext().getContentResolver().notifyChange(uri,null);
            return rowsDeleted;
            default:
            throw new IllegalArgumentException("Deletion is not supported for " + uri);
    }

}

@Override
public int update(@NonNull Uri uri, @Nullable ContentValues values, @Nullable String selection, @Nullable String[] selectionArgs) {
    final int match = sUriMatcher.match(uri);
    switch (match) {
        case PETS:
            return updatePet(uri, values, selection, selectionArgs);

        case PET_ID:
            selection = PetsContract.PetsEntry._ID + "=?";
            selectionArgs = new String[]{String.valueOf(ContentUris.parseId(uri))};
            return updatePet(uri, values, selection, selectionArgs);
        default:
            throw new IllegalArgumentException("Update is not possible for " + uri);

    }


}

private int updatePet(Uri uri, ContentValues values, String selection, String[] selectionArgs) {

    SQLiteDatabase database = mDbHelper.getWritableDatabase();
    int rowUpdated= database.update(PetsContract.PetsEntry.TABLE_NAME, values, selection, selectionArgs);
    if(rowUpdated!=0)
        getContext().getContentResolver().notifyChange(uri,null);

    return rowUpdated;

}

}

PetContract.java-:

package com.example.android.pets.data;

import android.content.ContentResolver;
import android.net.Uri;
import android.provider.BaseColumns;

public final class PetsContract {
private PetsContract(){}
public static final String CONTENT_AUTHORITY = "com.example.android.pets";
public static final Uri BASE_CONTENT_URI = Uri.parse("content://"+CONTENT_AUTHORITY);
public static final String PATH_PETS = "pets";
public static final Uri CONTENT_URI = Uri.withAppendedPath(BASE_CONTENT_URI,PATH_PETS);
/inner class that define the table content/
public static class PetsEntry implements BaseColumns {
public static final String TABLE_NAME="pets"; //name of the database table.
public static final String _ID=BaseColumns._ID;
public static final String COLUMN_PET_NAME="name";
public static final String COLUMN_PET_BREED="breed";
public static final String COLUMN_PET_GENDER="gender";
public static final String COLUMN_PET_WEIGHT="weight";
/possible value of the gender of the pet/
public static final int GENDER_UNKNOWN=0;
public static final int GENDER_MALE=1;
public static final int GENDER_FEMALE=2;
public final static String CONTENT_LIST_TYPE= ContentResolver.CURSOR_DIR_BASE_TYPE+"/"+CONTENT_AUTHORITY+"/"+PATH_PETS;
public final static String CONTENT_ITEM_TYPE = ContentResolver.CURSOR_ITEM_BASE_TYPE+"/"+CONTENT_AUTHORITY+"/"+PATH_PETS;

}

}

PetContract.txt
PetProvider.txt

Turn offline mode

I just imported the project from github but it shows enable offline mode

Can't create the pets table

Hi, I have a strange issue, if I declare the statement of creating the pets table as a class variable (outside of the onCreate method), the database is created but the table is not created. However, if I declare the create table statement inside the onCreate method the database is created with the table.
I couldn't find a reasonable explanation for that!!
Any idea??

Getting the following error on app run

when i am running app on device ,it is getting crashed with these errors.

06-15 12:07:00.617 17522-17522/com.example.android.pets E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.android.pets, PID: 17522
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.android.pets/com.example.android.pets.CatalogActivity}: java.lang.ClassNotFoundException: Didn't find class "com.example.android.pets.CatalogActivity" on path: DexPathList[[zip file "/data/app/com.example.android.pets-1/base.apk"],nativeLibraryDirectories=[/data/app/com.example.android.pets-1/lib/arm64, /vendor/lib64, /system/lib64]]
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2384)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2535)
at android.app.ActivityThread.access$1100(ActivityThread.java:154)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1396)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5582)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.example.android.pets.CatalogActivity" on path: DexPathList[[zip file "/data/app/com.example.android.pets-1/base.apk"],nativeLibraryDirectories=[/data/app/com.example.android.pets-1/lib/arm64, /vendor/lib64, /system/lib64]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
at android.app.Instrumentation.newActivity(Instrumentation.java:1068)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2374)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2535) 
at android.app.ActivityThread.access$1100(ActivityThread.java:154) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1396) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:148) 
at android.app.ActivityThread.main(ActivityThread.java:5582) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
Suppressed: java.lang.NoClassDefFoundError: com.example.android.pets.CatalogActivity
at dalvik.system.DexFile.defineClassNative(Native Method)
at dalvik.system.DexFile.defineClass(DexFile.java:226)
at dalvik.system.DexFile.loadClassBinaryName(DexFile.java:219)
at dalvik.system.DexPathList.findClass(DexPathList.java:338)
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:54)
... 13 more
Suppressed: java.lang.ClassNotFoundException: com.example.android.pets.CatalogActivity
at java.lang.Class.classForName(Native Method)
at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
... 12 more
Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack trace available
06-15 12:08:48.653 17522-17522/? I/Process: Sending signal. PID: 17522 SIG: 9

starting-point code doesn't match the code described in the video

in lesson 2 in the database course, in the second tab "importing existing project", when we view the answer to the quiz, the view describes a different starting code.

the starting code shouldn't contain the package file named "data" and the contents of the java codes are different as well, this is probably an advanced version of the code. how can i get the right one?

E/SQLiteLog: (1) no such table: pets not able to create a table

"CREATE TABLE " +
"pets" + " (" +
PetEntry._ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
PetEntry.COLUMN_PET_NAME + " TEXT NOT NULL, " +
PetEntry.COLUMN_PET_BREED + " TEXT, " +
PetEntry.COLUMN_PET_GENDER + " INTEGER NOT NULL, " +
PetEntry.COLUMN_PET_WEIGHT + " INTEGER NOT NULL DEFAULT 0);";
table creation command

Unable to start activity ComponentInfo{com.example.petdb/com.example.petdb.MainActivity}: android.database.sqlite.SQLiteException: no such table: pets (code 1 SQLITE_ERROR)

@OverRide
public void onCreate(SQLiteDatabase db) {
String SQL_CREATE_PETS_TABLE = "CREATE TABLE " + PetEntry.TABLE_NAME + " (" +
PetEntry._ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
PetEntry.COLUMN_PET_NAME + " TEXT NOT NULL, " +
PetEntry.COLUMN_PET_BREED + " TEXT NOT NULL, " +
PetEntry.COLUMN_PET_GENDER + " INTEGER NOT NULL DEFAULT 0, " +
PetEntry.COLUMN_PET_WEIGHT + " INTEGER NOT NULL DEFAULT 0" + ");";
db.execSQL(SQL_CREATE_PETS_TABLE);
}

PetDbHelper mDbHelper = new PetDbHelper(this);
SQLiteDatabase db = mDbHelper.getReadableDatabase();

Issue in CatalogActivity while initializing the loader

when i use this code line:getLoaderManager().initLoader(PET_LOADER, null, this);
the Android Studio shows me the message like:

"'Wrong 3rd argument type. Found: 'com.example.pets.CatalogActivity', required: 'android.app.LoaderManager.LoaderCallbacks<java.lang.Object>' less...
Inspection info:
initLoader() in LoaderManager cannot be applied to:"

Tried getSupportLoader() method suggested in one of the threads on StackOverFlow but it shows depreciated.
I'm using the SdkVersion 28 for my app

Can anyone help me please? thanks.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.