gpt4 book ai didi

android - 自定义 pageradapter 上的空指针异常

转载 作者:行者123 更新时间:2023-11-30 03:27:42 33 4
gpt4 key购买 nike

下面的代码适用于我的 viewpager 适配器。

    import android.content.Context;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.androidquery.AQuery;

public class ViewPagerAdapter2 extends PagerAdapter {

Context context;
String[] image1;
String[] description;


LayoutInflater inflater;

public ViewPagerAdapter2(Context context, String[] image1,String[] description) {
this.context = context;
this.image1 = image1;
this.description=description;


}

@Override
public boolean isViewFromObject(View view, Object object) {
return view == ((LinearLayout) object);
}

@Override
public Object instantiateItem(ViewGroup container, int position) {


TextView des;

inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View itemView = inflater.inflate(R.layout.slider, container,
false);
des = (TextView) itemView.findViewById(R.id.slider_des);
des.setText(description[position]);
AQuery aq = new AQuery(itemView);
aq.id(R.id.imageView1).image(image1[position]);

((ViewPager) container).removeView(itemView);



((ViewPager) container).addView(itemView);

return itemView;
}

@Override
public void destroyItem(ViewGroup container, int position, Object object) {
((ViewPager) container).removeView((LinearLayout) object);

}

@Override
public int getCount() {
// TODO Auto-generated method stub
return description.length;

}

}

我的 fragment 的代码:

public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
LinearLayout mLinearLayout = (LinearLayout) inflater.inflate(
R.layout.home, container, false);

new getFromWebService().execute();
viewPager1 = (ViewPager) mLinearLayout.findViewById(R.id.pager);
adapter1= new ViewPagerAdapter2(mLinearLayout.getContext(),image,title);
viewPager1.setAdapter(adapter1);

//ListView list = (ListView) mLinearLayout.findViewById(R.id.listView1);
//Onadapter listadapter = new Onadapter(getActivity(),id,label,title,image,hrs,posted_date);
//list.setAdapter(listadapter);

return mLinearLayout;

}

我的 logcat 输出:

07-31 16:27:05.868: E/AndroidRuntime(1364): FATAL EXCEPTION: main
07-31 16:27:05.868: E/AndroidRuntime(1364): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.lyfcha/com.lyfcha.TestMainActivity}: java.lang.NullPointerException
07-31 16:27:05.868: E/AndroidRuntime(1364): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2110)
07-31 16:27:05.868: E/AndroidRuntime(1364): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2135)
07-31 16:27:05.868: E/AndroidRuntime(1364): at android.app.ActivityThread.access$700(ActivityThread.java:140)
07-31 16:27:05.868: E/AndroidRuntime(1364): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1237)
07-31 16:27:05.868: E/AndroidRuntime(1364): at android.os.Handler.dispatchMessage(Handler.java:99)
07-31 16:27:05.868: E/AndroidRuntime(1364): at android.os.Looper.loop(Looper.java:137)
07-31 16:27:05.868: E/AndroidRuntime(1364): at android.app.ActivityThread.main(ActivityThread.java:4921)
07-31 16:27:05.868: E/AndroidRuntime(1364): at java.lang.reflect.Method.invokeNative(Native Method)
07-31 16:27:05.868: E/AndroidRuntime(1364): at java.lang.reflect.Method.invoke(Method.java:511)
07-31 16:27:05.868: E/AndroidRuntime(1364): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1027)
07-31 16:27:05.868: E/AndroidRuntime(1364): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794)
07-31 16:27:05.868: E/AndroidRuntime(1364): at dalvik.system.NativeStart.main(Native Method)
07-31 16:27:05.868: E/AndroidRuntime(1364): Caused by: java.lang.NullPointerException
07-31 16:27:05.868: E/AndroidRuntime(1364): at com.lyfcha.ViewPagerAdapter2.getCount(ViewPagerAdapter2.java:69)
07-31 16:27:05.868: E/AndroidRuntime(1364): at android.support.v4.view.ViewPager.setAdapter(ViewPager.java:432)
07-31 16:27:05.868: E/AndroidRuntime(1364): at com.lyfcha.Home1.onCreateView(Home1.java:56)
07-31 16:27:05.868: E/AndroidRuntime(1364): at android.support.v4.app.Fragment.performCreateView(Fragment.java:1460)
07-31 16:27:05.868: E/AndroidRuntime(1364): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:911)
07-31 16:27:05.868: E/AndroidRuntime(1364): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1088)
07-31 16:27:05.868: E/AndroidRuntime(1364): at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
07-31 16:27:05.868: E/AndroidRuntime(1364): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1444)
07-31 16:27:05.868: E/AndroidRuntime(1364): at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:551)
07-31 16:27:05.868: E/AndroidRuntime(1364): at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1178)
07-31 16:27:05.868: E/AndroidRuntime(1364): at android.app.Activity.performStart(Activity.java:5216)
07-31 16:27:05.868: E/AndroidRuntime(1364): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2083)
07-31 16:27:05.868: E/AndroidRuntime(1364): ... 11 more

我做了什么:1.从json中获取String数组中需要的数据。2. 我为 viewpager 编写了一个适配器以向其提供内容。

我遇到问题的地方:

应用程序抛出空指针异常,在我的 fragment 的 onCreateView 中指出我的适配器的 getCount 抛出 NPE。我确定字符串数组的长度不为空(在调试视角的显示窗口中测试)。

如有任何帮助,我们将不胜感激。

最佳答案

您应该从用于获取数据的 AsyncTask 中填充适配器。由于 getFromWebService 在不同的线程中执行,行

adapter1= new ViewPagerAdapter2(mLinearLayout.getContext(),image,title);

仍然没有来自其他线程的数据。因此,解决方案是移动以下行:

LinearLayout mLinearLayout = (LinearLayout) inflater.inflate(
R.layout.home, container, false);

viewPager1 = (ViewPager) mLinearLayout.findViewById(R.id.pager);
adapter1= new ViewPagerAdapter2(mLinearLayout.getContext(),image,title);
viewPager1.setAdapter(adapter1);

到您的 AsyncTask getFromWebServiceonPostExecute() 方法

关于android - 自定义 pageradapter 上的空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17968670/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com