Comments (27)
I'm using Androidx.Preferences from NuGet - pre version "-rc1" and GetDefaultSharedPreferences is missing, dotPeek does not show presence of this method either, method was available in pre version "-preview06". Maybe something wrong was uploaded to NuGet?
from androidx.
@moljac
Why not delist rc1 package it's missing crucial part of androidx.preference api?
from androidx.
PreferenceScreen is derived from PreferenceGroup and therefore Preference and Preference should contain getSharedPreferences (SharedPreference in C#).
The code PreferenceScreen.SharedPreferences.RegisterOnSharedPreferenceChangeListener assuming it's inside PreferenceFragment should compile without CS1061.
from androidx.
@moljac Did you mean check rc2? Yes, rc2 has same problem, method is missing.
from androidx.
Both MacOSX and Windows Azure DevOps (CI) build servers are generating correct code now.
Fixed in:
https://github.com/xamarin/AndroidX/releases/tag/AndroidX-rc3
Waiting for Americans to wake up, so somebody will press the green button to publish nuget[s].
Please provide feedback whether the issue is fixed. Even better close it yourself. Thanks
from androidx.
https://www.nuget.org/packages/Xamarin.AndroidX.Preference/1.1.0-rc3
Feedback please
from androidx.
GetDefaultSharedPreferences is back in rc3. It's alright to close issue. Thanks!
from androidx.
Will leave it for a bit to get more info.
@auedbaki Thanks
from androidx.
Getting same issue Xamarin.AndroidX.Preference 1.1.0-rc1
and No FindPreference Method on Xamarin.AndroidX.Preference 1.1.0-preview6
from androidx.
@YevgenijZ
Well I did not change anything in the bindings. Only updates (OS, IDE, tooling)...
in my generated code:
static Delegate cb_getSharedPreferences;
#pragma warning disable 0169
static Delegate GetGetSharedPreferencesHandler ()
{
if (cb_getSharedPreferences == null)
cb_getSharedPreferences = JNINativeWrapper.CreateDelegate ((Func<IntPtr, IntPtr, IntPtr>) n_GetSharedPreferences);
return cb_getSharedPreferences;
}
static IntPtr n_GetSharedPreferences (IntPtr jnienv, IntPtr native__this)
{
global::AndroidX.Preference.PreferenceManager __this = global::Java.Lang.Object.GetObject<global::AndroidX.Preference.PreferenceManager> (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
return JNIEnv.ToLocalJniHandle (__this.SharedPreferences);
}
#pragma warning restore 0169
public virtual unsafe global::Android.Content.ISharedPreferences SharedPreferences {
// Metadata.xml XPath method reference: path="/api/package[@name='androidx.preference']/class[@name='PreferenceManager']/method[@name='getSharedPreferences' and count(parameter)=0]"
[Register ("getSharedPreferences", "()Landroid/content/SharedPreferences;", "GetGetSharedPreferencesHandler")]
get {
const string __id = "getSharedPreferences.()Landroid/content/SharedPreferences;";
try {
var __rm = _members.InstanceMethods.InvokeVirtualObjectMethod (__id, this, null);
return global::Java.Lang.Object.GetObject<global::Android.Content.ISharedPreferences> (__rm.Handle, JniHandleOwnership.TransferLocalRef);
} finally {
}
}
}
So getSharedPreferences
is bound as property.
from androidx.
@moljac
Although I mentioned GetDefaultSharedPreferences(Context context) - Java: getDefaultSharedPreferences(Context context)
from androidx.
This
// Metadata.xml XPath method reference: path="/api/package[@name='androidx.preference']/class[@name='PreferenceManager']/method[@name='getDefaultSharedPreferences' and count(parameter)=1 and parameter[1][@type='android.content.Context']]"
[Register ("getDefaultSharedPreferences", "(Landroid/content/Context;)Landroid/content/SharedPreferences;", "")]
public static unsafe global::Android.Content.ISharedPreferences GetDefaultSharedPreferences (global::Android.Content.Context context)
{
const string __id = "getDefaultSharedPreferences.(Landroid/content/Context;)Landroid/content/SharedPreferences;";
try {
JniArgumentValue* __args = stackalloc JniArgumentValue [1];
__args [0] = new JniArgumentValue ((context == null) ? IntPtr.Zero : ((global::Java.Lang.Object) context).Handle);
var __rm = _members.StaticMethods.InvokeObjectMethod (__id, __args);
return global::Java.Lang.Object.GetObject<global::Android.Content.ISharedPreferences> (__rm.Handle, JniHandleOwnership.TransferLocalRef);
} finally {
}
}
??
from androidx.
@auedbaki
In downloaded decompiled package (ILSpy) I see FindPreference 2 overloads.
https://www.nuget.org/packages/Xamarin.AndroidX.Preference/1.1.0-rc1
Generated code:
static Delegate cb_findPreference_Ljava_lang_CharSequence_;
#pragma warning disable 0169
static Delegate GetFindPreference_Ljava_lang_CharSequence_Handler ()
{
if (cb_findPreference_Ljava_lang_CharSequence_ == null)
cb_findPreference_Ljava_lang_CharSequence_ = JNINativeWrapper.CreateDelegate ((Func<IntPtr, IntPtr, IntPtr, IntPtr>) n_FindPreference_Ljava_lang_CharSequence_);
return cb_findPreference_Ljava_lang_CharSequence_;
}
static IntPtr n_FindPreference_Ljava_lang_CharSequence_ (IntPtr jnienv, IntPtr native__this, IntPtr native_key)
{
global::AndroidX.Preference.PreferenceManager __this = global::Java.Lang.Object.GetObject<global::AndroidX.Preference.PreferenceManager> (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
global::Java.Lang.ICharSequence key = global::Java.Lang.Object.GetObject<global::Java.Lang.ICharSequence> (native_key, JniHandleOwnership.DoNotTransfer);
IntPtr __ret = JNIEnv.ToLocalJniHandle (__this.FindPreference (key));
return __ret;
}
#pragma warning restore 0169
// Metadata.xml XPath method reference: path="/api/package[@name='androidx.preference']/class[@name='PreferenceManager']/method[@name='findPreference' and count(parameter)=1 and parameter[1][@type='java.lang.CharSequence']]"
[Register ("findPreference", "(Ljava/lang/CharSequence;)Landroidx/preference/Preference;", "GetFindPreference_Ljava_lang_CharSequence_Handler")]
[global::Java.Interop.JavaTypeParameters (new string [] {"T extends androidx.preference.Preference"})]
public virtual unsafe global::Java.Lang.Object FindPreference (global::Java.Lang.ICharSequence key)
{
const string __id = "findPreference.(Ljava/lang/CharSequence;)Landroidx/preference/Preference;";
IntPtr native_key = CharSequence.ToLocalJniHandle (key);
try {
JniArgumentValue* __args = stackalloc JniArgumentValue [1];
__args [0] = new JniArgumentValue (native_key);
var __rm = _members.InstanceMethods.InvokeVirtualObjectMethod (__id, this, __args);
return (Java.Lang.Object) global::Java.Lang.Object.GetObject<global::Java.Lang.Object> (__rm.Handle, JniHandleOwnership.TransferLocalRef);
} finally {
JNIEnv.DeleteLocalRef (native_key);
}
}
public global::Java.Lang.Object FindPreference (string key)
{
global::Java.Lang.String jls_key = key == null ? null : new global::Java.Lang.String (key);
global::Java.Lang.Object __result = FindPreference (jls_key);
var __rsval = __result;
jls_key?.Dispose ();
return __rsval;
}
from androidx.
We work on our bindings tools too, so that might be the reason. I don't think that nuget upload/publishing would mess something up.
I will close this issue. Methods/properties should appear in rc2
or stable soon.
from androidx.
@moljac
On writing
ISharedPreferences sharedPreferences = PreferenceManager.GetDefaultSharedPreferences(Application.Context);
Getting Error:
Error CS1061: 'PreferenceManager' does not contain a definition for 'GetDefaultSharedPreferences' and no accessible extension method 'GetDefaultSharedPreferences' accepting a first argument of type 'PreferenceManager' could be found (are you missing a using directive or an assembly reference?)
On register and unregister using this code:
public override void OnResume()
{
base.OnResume();
PreferenceScreen.SharedPreferences.RegisterOnSharedPreferenceChangeListener(this);
}
public override void OnPause()
{
base.OnPause();
PreferenceScreen.SharedPreferences.UnregisterOnSharedPreferenceChangeListener(this);
}
Getting error about SharedPreferences from PreferenceScreen
Error CS1061: 'PreferenceScreen' does not contain a definition for 'SharedPreferences' and no accessible extension method 'SharedPreferences' accepting a first argument of type 'PreferenceScreen' could be found (are you missing a using directive or an assembly reference?) (CS1061)
from androidx.
@YevgenijZ I cannot delist packages. What else is missing?
from androidx.
@auedbaki
I am aware of GetDefaultSharedPreferences
missing.
Regarding PreferenceScreen
it would make sense to open new issue.
from androidx.
Alright then. Makes sense to close this issue when fix will be confirmed though to have public information that rc1 is missing something. Anyway i'm happy that you see the problem and it will be fixed.
from androidx.
Decompiled java:
package androidx.preference;
import android.content.*;
import android.util.*;
import androidx.core.content.res.*;
public final class PreferenceScreen extends PreferenceGroup
{
private boolean mShouldUseGeneratedIds;
public PreferenceScreen(final Context context, final AttributeSet attrs) {
super(context, attrs, TypedArrayUtils.getAttr(context, R.attr.preferenceScreenStyle, 16842891));
this.mShouldUseGeneratedIds = true;
}
@Override
protected void onClick() {
if (this.getIntent() != null || this.getFragment() != null || this.getPreferenceCount() == 0) {
return;
}
final PreferenceManager.OnNavigateToScreenListener listener = this.getPreferenceManager().getOnNavigateToScreenListener();
if (listener != null) {
listener.onNavigateToScreen(this);
}
}
@Override
protected boolean isOnSameScreenAsChildren() {
return false;
}
public boolean shouldUseGeneratedIds() {
return this.mShouldUseGeneratedIds;
}
public void setShouldUseGeneratedIds(final boolean shouldUseGeneratedIds) {
if (this.isAttached()) {
throw new IllegalStateException("Cannot change the usage of generated IDs while attached to the preference hierarchy");
}
this.mShouldUseGeneratedIds = shouldUseGeneratedIds;
}
}
from androidx.
@moljac You are right this is not the issue with PreferenceScreen, I just check the Original Docs from Google, and can say PreferenceScreen Class is Clean, and has no bug. May be it can be the issue of Binding Tools too.
from androidx.
Can you check rc1
of the package please?
NOTE: seems that the class is still missing. Not sure. There is duplicate issue with the details. Method is generated locally, but seems not to be generated on the CI servers during build and publish. This points out on the different tooling versions.
from androidx.
Duplicate
#46
from androidx.
Related:
from androidx.
Related:
dotnet/java-interop#543
CI servers should use 16.5 P2
from androidx.
Bumped Xamarin to 16.5 on CI bots
https://github.com/xamarin/AndroidX/blob/master/azure-pipelines.yml#L29
from androidx.
Yes, It's working now. You can close this issue.
from androidx.
Closing it. Preparing stable
from androidx.
Related Issues (20)
- Announcement: Xamarin.Android and .NET 6/7 no longer supported
- "Specified cast is not valid" when using SetOnItemSelectedListener of NavigationBarView HOT 6
- `Xamarin.Jetbrains.Annotations` namespace clash with `JetBrains.Annotations` causes CS0433 build failure HOT 1
- Can't install Xamarin.AndroidX.AppCompat and RecyclerView latest versions into Xamarin project HOT 2
- androidx.profileinstaller.ProfileInstaller.writeProfile java.lang.ClassNotFoundException: Didn't find class "com.google.common.util.concurrent.ListenableFuture" on path: DexPathList HOT 6
- Announcement: .NET 7 no longer supported HOT 1
- Bind AndroidX.ViewPager2 1.1.0 HOT 3
- error CS7069: Reference to type 'ILifecycleOwner' claims it is defined in 'Xamarin.AndroidX.Lifecycle.Common', but it could not be found HOT 1
- Still unable to use Xamarin.AndroidX.Emoji2.EmojiPicker
- Error running `api-diff` on `Xamarin.AndroidX.Car.App.App`
- after installation Xamarin.AndroidX.Work.Runtime 2.9.0.4 its giving error androidx.collection.ArrayMapKt on building the project in Visual Studio Community 2022 for Mac Version 17.6.9 HOT 2
- Recycler view (and other androidx controls) shows error in .xml preview HOT 2
- Media3 Exoplayer bug HOT 2
- Cannot replace a media item or seek in Exoplayer when adding a listener HOT 12
- Build issue with version 1.9.1 of `Xamarin.AndroidX.Activity` HOT 6
- Build error in LiveDataKt$observe$wrappedObserver$1.class HOT 9
- [AndroidX.Media3.Transformer] EditedMediaItem.Builder missing HOT 9
- Support for the new Watch Face Format HOT 2
- Bind "androidx.compose.ui" HOT 4
- [AndroidX.Media3.ExoPlayer] Removing MediaSourceFactory causes MediaSources not to inherit IMediaSourceFactory HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from androidx.