آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

خطای NuulPointerExeption در ViewPager(حل شده)

umbrella931  12 سال پیش  12 سال پیش
0 0

با سلام خدمت تمام بچه های سایت من داخل برنامم دارم از 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() {}

 

0 0
من خودم اینا رو امجام دادم درست نشه تقریبا سه روز که همین خطا منو درگیر خودش کرده داخل sackoverflow هم پنج سوال در اینمورد دیدم اما هیچکدوم به جواب درستی نرسیده بود (12 سال پیش)
0 0
پروژه ای که دارم روش کار می کنم دقیقا همینه و هیچ مشکلی ندارم باش. این آموزش رو ببین شاید به دردت بخوره لینک (12 سال پیش)
0 0
منم از همین لینک استفاده کردم ولی وقتی لیست ویو اضافه میکنم این ارور رو میده برای باقیه ویو ها مشکلی نداره اگه شما داخل برنامتون از لیست ویو استفاده میکنید یه بزرگواری کنید و اون تکه کد های مربوط به لیست ویو رو اینجا قرار بدید (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;
    }
}
0 0
کدای AndroidManifest.xml رو هم بزار شاید مشکل از اون باشه... (12 سال پیش)
0 0
لعنت به این منیفست مشکل از اون بود آقا خیلی ممنون (12 سال پیش)
پاسخ به سوال 
umbrella931  12 سال پیش
0 0

حالا از این خط ارور میگیره

 super(G.context, R.layout.adapter_notes, array);
0 0
G رو تو manifest معرفی کردی؟ (12 سال پیش)
0 0
ممنون مشکل از همین بود اینم یکی ار خصلت های برنامه نویس شلختس (12 سال پیش)
0 0
خواهش می کنم، اشکال نداره چند دفعه که وقتت رو بگیره دیگه یادت میمونه به manifest هم توجه کنی :) (12 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .