First, the flow is
OnAttach() saves the received context in the global variable mContext, which is not null until then.
Invoke public static void refreshSpinner(), where public void setSpinner(ArrayListal) is called
Called public void setSpinner (ArrayListal). Check mContext here to make it null.
MyActivity.java
/* MyActivity.java */
private Context mContext;
@Override
public void onAttach(Context ctx){
super.onAttach(ctx);
mContext = ctx;
//mContext and ctx are not null
}
public static void refreshSpinner(){
File[] f = new File ("path...").listFiles();
ArrayList l = new ArrayList();
for(File a : f){
l.add(a.getAbsolutePath());
}
new MyActivity().setSpinner(l);
}
public void setSpinner(ArrayList al){
//MContext is null when checked here
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getContext(), android.R.layout.simple_spinner_dropdown_item, al);
spinner.setAdapter(adapter);
spinner.setSelection(0);
}
What's going on here?
Obviously, what wasn't null is null only in the method...
android android-context null
There are a few things you need to know.
The static method does not pass this as the first parameter.
You will know that you can access the instance variable in the form of this.variable
. If the reason why it is possible is the instance method, this is always automatically passed as the first parameter. I just don't feel it because it's implied. However, this is not delivered to the static method.
onAttach
is the callback method. This means that the creation of objects would have been within the Android framework.
The problem is that the static method refreshSpinner
is explicitly creating objects with newMyActivity().setSpinner(l);
. This object is not an object with onAttach
invoked.
In summary, onAttach is null because it was not called because a new object was created.
Get context by looking at the link below.
https://developer.android.com/reference/android/view/View.html#getContext%28%29
617 Uncaught (inpromise) Error on Electron: An object could not be cloned
911 When building Fast API+Uvicorn environment with PyInstaller, console=False results in an error
581 PHP ssh2_scp_send fails to send files as intended
610 GDB gets version error when attempting to debug with the Presense SDK (IDE)
© 2024 OneMinuteCode. All rights reserved.