I was learning android notification tutorial using this link but when I started using
Notification notification = new NotificationCompat.Builder(this, App.CHANNEL_1_ID);
this code, I can't import android.support.v4.app. NotificationCompat , how to do that?
It only imports
import androidx.core.app.NotificationCompat;
import androidx.core.app.NotificationManagerCompat;
import android.app.Notification;
Do I need to add something in build.gradle?
I am using Android Studio 2021.1.1, is that the problem?
androidx is new support library for the replacement v4.support library. And androidx is recommended. I suggest you to use search filter to find tutorial later than 2020~2021.
However you can still use v4.support library by checking "Use legacy android.support library" option while creating a project.
While this is not enough, because latest build tools will not support deprecated libraries, you have to keep compleSdkVersion 28 or below. You are also required to downgrade your Android Gradle Plugin to 3.6.4 and gradle wrapper to 6.0
Make sure these lines are not present in gradle.properties
android.useAndroidX=true
android.enableJetifier=true
Now you can follow the above tutorial.
Use
android.arch.core:core
android.arch.core:common
instead of
androidx.arch.core:core-common
androidx.arch.core:core
Here is the full list of equivalent artifacts of support library to androidx
I do not recommend you to follow above tutorial find latest tutorial. Tech is rapidly changing, following an outdated tutorial might slow your learning process and keep you behind.
I've been trying to follow
https://developer.android.com/training/notify-user/expanded
in order to create a media notification. My SDK target is 21+.
I got a basic notification working but when I got to doing the media one I've had this problem:
import android.support.v4.app.!NotificationCompat!
import android.support.v4.media.!app!.NotificationCompat as MediaNotificationCompat
The two exclamation marked items (NotificationCompat and app) turn red in the editor and I can't use them :(
What do I need to do to get to the media style?
Notes:
I have this implementation "com.android.support:support-compat:28.0.0" in my application build filee
It's underlined suggesting I move to androidx but I don't think that's an option?
I can't speak for where the old Android Support edition of NotificationCompat.MediaStyle might be hiding. In AndroidX, you can find it in the androidx.media:media artifact. Right now, the latest stable version is 1.1.0, so you can add:
implementation "androidx.media:media:1.1.0"
to your dependencies to pull that in.
I updated Android Studio to version 3.2.0.
When I accept any change from list of suggestion or alt + enter.
Problem is #androidx.annotation auto created.
Thus suggestions method have two annotation #androidx.annotation.Nullable and android.support.annotation.Nullable.
I don't want to manually remove this unwanted suggestion, so what can I do to have only android.support.annotation?
Also androidx.annotation package is not added in my app. and I don't want to add androidx.annotation.
See example.
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
public class LoginActivity extends AppCompatActivity {
#Override
public void onCreate(#androidx.annotation.Nullable #Nullable Bundle savedInstanceState, #androidx.annotation.Nullable #Nullable PersistableBundle persistentState) {
super.onCreate(savedInstanceState, persistentState);
}
}
Is there some IDE setting to remove auto generation of androidx.annotation?
Update
I could get rid of this problem with migrating to androidx (from official doc), but I am not able to migrate all projects to androidx currently. So need a solution.
AndroidX is the new extension libraries for backward compatibility support. In future new feature backward compatibility support will be addressed in AnddroidX. As stated in this blog https://android-developers.googleblog.com/2018/05/hello-world-androidx.html
The stable release of 28.0.0 will be the final feature release packaged as >android.support. All subsequent feature releases will only be made available as >androidx-packaged artifacts.
https://developer.android.com/topic/libraries/support-library/revisions
Revision 28.0.0 Production
(September 21, 2018)
This is the stable release of Support Library 28.0.0 and is suitable for use >in production. This will be the last feature release under the >android.support packaging, and developers are encouraged to migrate to >AndroidX.
Moving your app from android.support to androidx-packaged dependencies
Refer to this link, https://developer.android.com/jetpack/androidx/migrate
If you depend on a library that references the older Support Library, Android Studio will update that library to reference androidx instead via dependency translation. Dependency translation is automatically applied by the Android Gradle Plugin 3.2.0-alpha14, which rewrites bytecode and resources of JAR and AAR dependencies (and transitive dependencies) to reference the new androidx-packaged classes and artifacts. We will also provide a standalone translation tool as a JAR.
So, In Step 1(dependency translation): In your gradle.properties file set the android.useAndroidX flag to true and the android.enableJetifier flag to true.
android.useAndroidX=true
android.enableJetifier=true
in Step 2(source refactoring): With Android Studio 3.2 and higher, you can quickly migrate an existing project to use AndroidX by selecting Refactor > Migrate to AndroidX from the menu bar.
Just add annotationProcessor 'androidx.annotation:annotation:1.1.0' as a dependency in your build.gradle(Module: app) file.
Android Studio has a preference option "Exclude from import and completion" that you could use to suppress the suggestion of androidx packages:
In this screenshot, for example, I've added the java.time package to this list because I want my autocomplete to suggest org.threeten.bp.LocalDate but never java.time.LocalDate.
You should be able to add androidx.annotation to this list to solve your problem.
Android Studio can only import files which are included in your classpath. This includes Androidx libraries - thankfully, if the classes are not present, Studio won't suggest them (which is why the rest of us don't see this issue in our projects).
That being said, the implication here is that you have updated your gradle file to include the package containing androidx.annotation.NonNull
com.android.support:support-annotations became androidx.annotation:annotation:1.0.0 according to the migration guide, so you can look for this group in your module Gradle file.
The simplest fix is to remove that package from Gradle, then Clean and Rebuild.
Note: If you want to stick with Support annotations then the latest and greatest version is 28 as mentioned here
Using Android Studio 3.3.1, I was able to replicate the problem. My project had just been created, with no AndroidX dependency. When I created the first fragment and overrode onCreateView(), the 2 annotations #androidx.annotation.Nullable and #Nullable were automatically added by Android Studio to the method (no prompt given with a possible choice of import). The only annotation import automatically added was import android.support.annotation.Nullable;
If you do not wish to migrate to AndroidX, here is a fix that worked for me:
Manually delete all the #androidx.annotation.Nullable annotation(s), leaving only the original #Nullable annotation(s).
Do File > Invalidate Caches / Restart
When a new Fragment will be created in the app, only the original Support Library's #Nullable annotation will be added.
Using Android Studio Arctic Fox (equivalent to version 4.3). I did not migrate to AndroidX for my project. What worked for me is adding
implementation 'androidx.annotation:annotation:1.1.0'
to the app-level build.gradle.
As stated on the support library release note.
This is the stable release of Support Library 28.0.0 and is suitable
for use in production. This will be the last feature release under the
android.support packaging, and developers are encouraged to migrate to
AndroidX.
You could still use support's class path. (remember to clean and build)
But highly recommend you to migrate to AndroidX as 28.0.0 of support is the last release.
(remember, NOT BOTH)
I will start by saying I am a very novice slapstick hobbyist, but this same issue got me stuck and its been resolved for some time and I could not find a solution.
Everyone talks about adding dependencies to your build.griddle files, and if that works great, for me it never took until I changed the actual import listings (API 28) and changing them from...
import android.support.annotation.Nullable;
-to-
import androidx.annotation.Nullable;
I had to do a lot of improvisation to find the new directories because they didn't seem to be listed anywhere I could easily find.
This was also the case for Fragment, FragmentManager, DialogueFragment, and many others. I hope this helps someone suffering like I was!
Since this problem has emerged for me after updating to Android studio 4.2.1 (or maybe 4.2?), I am adding the way to fix it here, for anyone who stumbles upon this question, as I did.
I started getting double nullability annotations, as described in this question, recently.
To fix it, do the following:
Go to Android studio preferences
Go to Editor > Inspections
Go to Java > Probable bugs > Nullability problems > #NotNull/#Nullable problems
Press the "Configure Annotations" button
Select "androidx.annotation.Nullable" in the top box, and press the checkmark button below the box, titled "Select annotation used for code generation"
Do the same for "androidx.annotation.NonNull" in the bottom box.
Press OK
Android studio should now only use the androidx annotations when generating code.
I want to use the SimpleCallback class from the ItemTouchHelper class as seen below, but somehow the import fails. Android Studio says "cannot resolve symbol ItemTouchHelper".
I looked into the android developer site, but I couldn't find any deprecated marker or something like that.
It seems as if it can still be used.
Android Studio is up to date (2.2.3) and the installed APIs too.
The Android Support Plugin is also activated.
I hope someone can help me. Feel free to ask me for details.
Update: Android Studio can't find the helper class. "...widget.helper".
See below:
import android.support.v7.widget.
That "Android Support" plugin says "yes, this IDE can develop Android apps".
It is not literally the Android Support Library.
Please see how to set that up.
And make sure your gradle file contains
dependencies {
...
compile "com.android.support:appcompat-v7:(pick a version)"
}
So when I import the Android Support Library v7 (appcompat JAR), I see that I get a noclassdeferror when trying to use it. This is because the package android.support.v7.appcompat is not being found as it is not even there in appCompat.JAR. I confirmed this by extracting the contents of the JAR file. I tried reinstalling the JAR with SDK Manager, however I am missing the same package every time. Can someone tell me what's going wrong?
Thanks
You have to import the appcompat library in to your project...please check the following link for getting how to setup appcompat in your project..
https://developer.android.com/tools/support-library/setup.html
thank you
Also had this problem. Yes, I knew I need to use the SDK Manager dialog to download the support library from the extras folder, as per the Support Library Set-up link, but it wasn't listed there - there is only the "support repository".
The problem is that it is hidden by default, as it has been deprecated. You need to check the "show: obsolete" checkbox. And then it's available to download.
You need to import support
dependencies {
...
implementation "com.android.support:support-core-utils:28.0.0"
}