بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
خطای NuulPointerExeption در ViewPager(حل شده)
با سلام خدمت تمام بچه های سایت من داخل برنامم دارم از viewpager استفاده میکنم ولی وقتی لیست ویو رو بهش اضافه میکنم مشکل پیش میاد و خطای NullPointerExeption میده میگه adapter خالیه درصورتیکه همون کد جای دیگه درست کار میکنه حتی برای تست کدی که خود استاد نوشتن رو هم کپی کردم ولی همون ارور رو داد کد ها رو میزارم هر کی تونست کمک کنه
ActivityMain.java AND MainPagerAdapter
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
public class ActivityMain extends FragmentActivity {
MainPagerAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ViewPager pager = (ViewPager) findViewById(R.id.pager);
adapter = new MainPagerAdapter(getSupportFragmentManager());
pager.setAdapter(adapter);
}
public class MainPagerAdapter extends FragmentPagerAdapter {
public MainPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int index) {
switch (index) {
case 0:
// Top Rated fragment activity
return new TopRatedFragment();
case 1:
// Games fragment activity
return new GamesFragment();
case 2:
// Movies fragment activity
return new MoviesFragment();
}
return null;
}
@Override
public int getCount() {
// get item count - equal to number of tabs
return 3;
}
}
}
AdapterNote.java
import java.util.ArrayList; import android.graphics.Color; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.CheckBox; import android.widget.ImageView; import android.widget.TextView; public class AdapterNote extends ArrayAdapter<StructNote> { public AdapterNote(ArrayList<StructNote> array) { super(G.context, R.layout.adapter_notes, array); } private static class ViewHolder { public ViewGroup layoutRoot; public TextView txtTitle; public TextView txtDescription; public CheckBox chkDone; public ImageView imgDelete; public ViewHolder(View view) { txtTitle = (TextView) view.findViewById(R.id.txtTitle); txtDescription = (TextView) view.findViewById(R.id.txtDescription); chkDone = (CheckBox) view.findViewById(R.id.chkDone); layoutRoot = (ViewGroup) view.findViewById(R.id.layoutRoot); imgDelete = (ImageView) view.findViewById(R.id.imgDelete); } public void fill(final ArrayAdapter<StructNote> adapter, final StructNote item, final int position) { txtTitle.setText(item.title); txtDescription.setText(item.description); chkDone.setChecked(item.done); imgDelete.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { adapter.remove(item); } }); layoutRoot.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // Intent intent = new Intent(G.currentActivity, ActivityEdit.class); // intent.putExtra("POSITION", position); //G.currentActivity.startActivity(intent); } }); chkDone.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { CheckBox checkBox = (CheckBox) view; item.done = checkBox.isChecked(); if (item.done) { txtTitle.setTextColor(Color.RED); } else { txtTitle.setTextColor(Color.WHITE); } } }); if (item.done) { txtTitle.setTextColor(Color.RED); } else { txtTitle.setTextColor(Color.WHITE); } } } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; StructNote item = getItem(position); if (convertView == null) { convertView = G.inflater.inflate(R.layout.adapter_notes, parent, false); holder = new ViewHolder(convertView); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } holder.fill(this, item, position); return convertView; } }
G.java
import java.util.ArrayList;
import android.app.Activity;
import android.app.Application;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.os.Environment;
import android.view.LayoutInflater;
public class G extends Application {
public static int position;
public static Context context;
public static SQLiteDatabase database;
public static LayoutInflater inflater;
public static final String DIR_SDCARD = Environment.getExternalStorageDirectory().getAbsolutePath();
public static final String DIR_DATABASE = DIR_SDCARD + "/jomla/";
public static final String DIR_DATA = DIR_DATABASE + "data.sqlite/";
public static ArrayList<StructNote> notes = new ArrayList<StructNote>();
public static Activity currentActivity;
@Override
public void onCreate() {
super.onCreate();
context = this.getApplicationContext();
inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
}
StructNote.java
public class StructNote { public String title; public String description; public boolean done; }
GameFragment.java
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class GamesFragment extends Fragment {
public ArrayAdapter adapter;
@Override
public void onResume() {
super.onResume();
if (adapter != null) {
adapter.notifyDataSetChanged();
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_games, container, false);
ListView lstContent = (ListView) rootView.findViewById(R.id.lstContent);
adapter = new AdapterNote(G.notes);
Log.i("Log", (String) adapter.getItem(2));
lstContent.setAdapter(adapter);
for (int i = 0; i < 10; i++) {
StructNote note = new StructNote();
note.title = "Title " + i;
note.description = "Description " + i;
note.done = false;
G.notes.add(note);
}
adapter.notifyDataSetChanged();
return rootView;
}
}
0
0
از کدوم خط دقیقا خطا می گیره؟ در کپی کردن دقت کنید که نام ها با سیستم جدیدتون منطبق شده باشند. (12 سال پیش)
0
0
از اینخط میگه adapter خالیه
lstContent.setAdapter(adapter); (12 سال پیش)
برای این سوال 3 پاسخ وجود دارد.
پاسخ به سوال
hosseinAmini
12 سال پیش
+1
0
خب یه خطایی که من تو کدت متوجه شدم اینه که برای کلاس GamesFragment، استراکچر(structure) ننوشتی. این کد رو بالای onResume قرار بده ببنین بازم ایراد میگیره.
public GamesFragment() {}
پروژه ای که دارم روش کار می کنم دقیقا همینه و هیچ مشکلی ندارم باش. این آموزش رو ببین شاید به دردت بخوره لینک (12 سال پیش)
پاسخ به سوال
hosseinAmini
12 سال پیش
+1
0
من از sherlock استفاده کردم ولی خیلی فرق نمی کنه
کلاس FragmentFavorites
public class FragmentFavorites extends SherlockFragment {
private AdapterImages adapterFavorites;
private ArrayList<StructImage> favImages = new ArrayList<StructImage>();
public FragmentFavorites() {}
@Override
public void onResume() {
super.onResume();
getFavImages();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_favorites, container, false);
GridView gridFavorites = (GridView) view.findViewById(R.id.gridFavorites);
adapterFavorites = new AdapterImages(favImages);
gridFavorites.setAdapter(adapterFavorites);
return view;
}
private void getFavImages() {
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
favImages.clear();
Cursor cursor = G.database.rawQuery("SELECT * FROM images WHERE image_fav=1 ORDER BY image_fav_time DESC", null);
while (cursor.moveToNext()) {
StructImage image = new StructImage();
image.url = cursor.getString(cursor.getColumnIndex("image_name"));
favImages.add(image);
}
cursor.close();
G.HANDLER.post(new Runnable() {
@Override
public void run() {
adapterFavorites.notifyDataSetChanged();
}
});
}
});
thread.start();
}
}
adapter
public class AdapterImages extends ArrayAdapter<StructImage> {
public static HashMap<ImageView, String> imageMap = new HashMap<ImageView, String>();
public AdapterImages(ArrayList<StructImage> array) {
super(G.context, R.layout.adapter_images, array);
}
private static class ViewHolder {
public ImageView imgThumb;
public String imageName;
public View toastLayout;
private ViewHolder(View view) {
imgThumb = (ImageView) view.findViewById(R.id.imgThumb);
toastLayout = G.inflater.inflate(R.layout.toast, (ViewGroup) view.findViewById(R.id.lneToast));
}
public void fill(ArrayAdapter<StructImage> adapter, final StructImage item, int position) {
imageName = HelperString.getFileName(item.url);
File thumbFile = new File(G.DIR_THUMBNAIL + "/" + imageName);
if ( !thumbFile.exists()) {
imgThumb.setImageBitmap(null);
DownloadManager.addToDownloadList(imgThumb, item.url, item.sImageId);
}
Bitmap bitmap = BitmapFactory.decodeFile(thumbFile.getAbsolutePath());
imgThumb.setImageBitmap(bitmap);
imgThumb.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
if (CheckInternet.isOnline()) {
Intent intent = new Intent(G.currentFragment, ActivityShare.class);
intent.putExtra("IMAGE_NAME", imageName);
G.currentFragment.startActivity(intent);
} else {
File imageFile = new File(G.DIR_IMAGES + "/" + imageName);
if ( !imageFile.exists()) {
Toast toast = new Toast(G.context);
toast.setDuration(Toast.LENGTH_LONG);
toast.setView(toastLayout);
toast.show();
} else {
Intent intent = new Intent(G.currentFragment, ActivityShare.class);
intent.putExtra("IMAGE_NAME", imageName);
G.currentFragment.startActivity(intent);
}
}
}
});
}
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
StructImage item = getItem(position);
if (convertView == null) {
convertView = G.inflater.inflate(R.layout.adapter_images, parent, false);
holder = new ViewHolder(convertView);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.fill(this, item, position);
return convertView;
}
}
پاسخ به سوال
umbrella931
12 سال پیش
0
0
حالا از این خط ارور میگیره
super(G.context, R.layout.adapter_notes, array);
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .