如何在内部类中调用外部类方法

时间:2016-03-03 00:52:00

标签: java android android-asynctask nullpointerexception inner-classes

所以我的代码崩溃了bug,因为我在outer的{​​{1}}课程中调用方法。

所以这是我的简单课程:

onPostExecute

所以public class UsersList extends Fragment{ @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { ... } public void callMe(){ Toast.makeText(getContext(), "I work", Toast.LENGTH_LONG).show(); } public class UserRecommend extends AsyncTask<String, String, String> { @Override protected String doInBackground(String... params) { ... } @Override protected void onPostExecute(String data) { // The line below crashes with NullPointerException UsersList.this.callMe(); } } } UserRecommend中的内部类,所以我调用了UsersList方法,它正在崩溃。我的callMe()outer中的任何方法都崩溃了。我知道我可以直接打印UsersList,但我不想,因为我有一个更复杂的方法。我该如何解决这个问题,我需要调用toast

中的方法

编辑: 我找到了主outer - 但我不知道如何修复它。基本上,我有一个自定义的recyclerview适配器,bug有一个cardview按钮。当用户单击recommend按钮时,它会调用一个处理recommend内容的方法并调用db方法。我觉得这就是问题所在,但我在这里定义了populate动作:

button

上述方法位于我的 @Override public void onBindViewHolder(final RecyclerViewHolder holder, int position) { holder.recommendButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { UsersList usersList = new UsersList(); UsersList.UsersRecommend usersRecommend = usersList.new UsersRecommend(usersList); usersRecommend.execute(); } }); } 课程中,CustomAdapter在该课程中定义,而不是我的主要button课程

堆栈追踪:

UsersList

因为我从另一个CustomAdapter类调用java.lang.NullPointerException at com.android.volley.toolbox.Volley.newRequestQueue(Volley.java:43) at com.android.volley.toolbox.Volley.newRequestQueue(Volley.java:78) at lukazs.usersapp.UsersList.getRView(UsersList.java:186) at lukazs.usersapp.UsersList.callMe(UsersList.java:161) at lukazs.usersapp.UsersList$UserRecommend.onPostExecute(UsersList.java:459) at lukazs.usersapp.UsersList$UserRecommend.onPostExecute(UsersList.java:431) at android.os.AsyncTask.finish(AsyncTask.java:631) at android.os.AsyncTask.access$600(AsyncTask.java:177) at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:5103) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:525) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) at dalvik.system.NativeStart.main(Native Method) 类,我相信它正在失去活动。 它崩溃在这条特定的线上: UserRecommend

这是我调用此函数的代码:

RequestQueue requestQueue = Volley.newRequestQueue(getActivity());

0 个答案:

没有答案