বিকাশকারী কনসোল ত্রুটির প্রতিবেদনে মাঝে মাঝে আমি এনপিই ইস্যু সহ প্রতিবেদনগুলি দেখতে পাই। আমার কোডটিতে কী ভুল তা আমি বুঝতে পারি না। এমুলেটরটিতে এবং আমার ডিভাইসের অ্যাপ্লিকেশন ফোর্সক্লোসগুলি ছাড়াই ভাল কাজ করে, তবে কিছু ব্যবহারকারী যখন অ্যাক্টিভিটি () পদ্ধতিটি কল করা হয় তখন খণ্ড শ্রেণিতে নুলপয়েন্টারএক্সসেপশন পান।
কার্যকলাপ
pulic class MyActivity extends FragmentActivity{
private ViewPager pager;
private TitlePageIndicator indicator;
private TabsAdapter adapter;
@Override
public void onCreate(Bundle savedInstanceState) {
pager = (ViewPager) findViewById(R.id.pager);
indicator = (TitlePageIndicator) findViewById(R.id.indicator);
adapter = new TabsAdapter(getSupportFragmentManager(), false);
adapter.addFragment(new FirstFragment());
adapter.addFragment(new SecondFragment());
indicator.notifyDataSetChanged();
adapter.notifyDataSetChanged();
// push first task
FirstTask firstTask = new FirstTask(MyActivity.this);
// set first fragment as listener
firstTask.setTaskListener((TaskListener) adapter.getItem(0));
firstTask.execute();
}
indicator.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageSelected(int position) {
Fragment currentFragment = adapter.getItem(position);
((Taskable) currentFragment).executeTask();
}
@Override
public void onPageScrolled(int i, float v, int i1) {}
@Override
public void onPageScrollStateChanged(int i) {}
});
}
অ্যাসিঙ্কটাস্ক ক্লাস
public class FirstTask extends AsyncTask{
private TaskListener taskListener;
...
@Override
protected void onPostExecute(T result) {
...
taskListener.onTaskComplete(result);
}
}
টুকরা ক্লাস
public class FirstFragment extends Fragment immplements Taskable, TaskListener{
public FirstFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.first_view, container, false);
}
@Override
public void executeTask() {
FirstTask firstTask = new FirstTask(MyActivity.this);
firstTask.setTaskListener(this);
firstTask.execute();
}
@Override
public void onTaskComplete(T result) {
// NPE is here
Resources res = getActivity().getResources();
...
}
}
অ্যাপ্লিকেশনগুলি পটভূমি থেকে পুনরায় শুরু করার সময় এই ত্রুটিটি ঘটতে পারে। এই ক্ষেত্রে আমার এই পরিস্থিতিটি কীভাবে সঠিকভাবে পরিচালনা করা উচিত?