아래 코드는 내 viewpager 용 어댑터입니다.사용자 정의 pageradapter에 대한 널 포인터 예외
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;
}
}
내 조각의 코드 :
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;
}
내 로그 캣 출력 :
필자가 무슨 짓을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
: JSON에서 1. 획득 필요한 데이터를 문자열 배열에. 2. iveive는 뷰 페이지가 콘텐츠를 피드로 제공 할 수 있도록 어댑터를 작성했습니다. 내가 문제로 실행 한
는 :
응용 프로그램 내 조각의 onCreateView 내 어댑터의 getCount는 NPE를 발생한다는, 널 포인터 예외가 발생합니다. 문자열 배열의 길이가 null이 아니라고 확신합니다 (디버그 퍼스펙티브의 표시 창에서 테스트 됨).
도움을 주시면 감사하겠습니다.
이 우리를 표시합니다. – hardartcore
title은 전역 변수로 선언됩니다. json 배열이 수신되는 클래스에서 정의 된 크기와 json에서 수신 된 데이터에서 루프에 값이 삽입됩니다. 문자열 배열에 문제가 없다는 것을 확신 할 수 있습니다! 그것은 원하는대로 값을 포함합니다! –
다른 스레드에서 채워진 경우 스레드 완료 후 어댑터 추가를 고려해야합니다. – hardartcore