Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
stompbox
0 / 0 / 0
Регистрация: 16.12.2012
Сообщений: 27
#1

Перевод Activity в ListFragment - Программирование Android

26.08.2014, 21:21. Просмотров 740. Ответов 9
Метки нет (Все метки)

Здравствуйте!

Возникла очень большая проблема связанная с переводом Activity в ListFragment. А именно тут (не реклама). Проблема состоит ещё и с библиотекой Volley. Вообще у кого есть возможность, и кто разбирается в данных вещам, либо имеет хоть малейшее представление, то, пожалуйста, поделитесь своим мнением. Кого заинтересует, и кому лень скачивать данный архив, то сообщите, выложу тут.

Стектрейс на данный момент (не полностью):
Кликните здесь для просмотра всего текста
E/AndroidRuntime(5199): java.lang.RuntimeException: Unable to start activity ComponentInfo{geek.geek.info/geek.geek.info.MainActivity}: java.lang.NullPointerException

E/AndroidRuntime(5199): Caused by: java.lang.NullPointerException

at rgeek.geek.info.CustomAdapter.getCount(CustomAdapter.java:33)


Скажу сразу, Google пользовался...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.08.2014, 21:21     Перевод Activity в ListFragment
Посмотрите здесь:

ListFragment - Программирование Android
В ListFragment выводятся файлы, надо сделать возврат по кнопке "назад" для возврата в папку на уровень выше. Вот код Activity package...

ListFragment - Программирование Android
Всем доброго дня. Уперся малеько в дно. Из MainActivity через NavigationDrawer перехожу в ListFragment. Подскажите что делать дальше?...

Listfragment Super - Программирование Android
Добрый день в где тут проблема. public class ItemFragment extends ListFragment { @Override protected void...

ListFragment не получается - Программирование Android
Почему то не получается добавить фрагмент. При попытке добавления, программма вылетает с ошибкой. ЧТо делаю не так? Код мейнактивиту где...

Обновить вид ListFragment - Программирование Android
package in.wptrafficanalyzer.navigationtabdemo; import java.util.ArrayList; import java.util.List; import...

ExpandableListView внутри ListFragment - Программирование Android
Здравствуйте, мне внутри listFragment нужно сделать ExpandableListView. Как делать обычный listView я разобрался, с этим немогу...

ListFragment - своя разметка item - Программирование Android
А как свою разметку каждого item подсунуть в ListFragment? Вот как есть сейчас и работает: @Override public void...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
KillAndEat
63 / 63 / 8
Регистрация: 17.05.2013
Сообщений: 286
26.08.2014, 22:12     Перевод Activity в ListFragment #2
выкладывайте сюда. По "не полному" логу смахивает на то, что вы данные в адаптер неправильно передаете. А точнее они null равны. Но без кода трудно сказать)
stompbox
0 / 0 / 0
Регистрация: 16.12.2012
Сообщений: 27
26.08.2014, 23:13  [ТС]     Перевод Activity в ListFragment #3
Так, выкладываю:

activity_main.xml :

Кликните здесь для просмотра всего текста
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="geek.geek.info.MainActivity" >
 
<fragment
 android:id="@+id/fragment1"
 android:name="geek.geek.info.Fragment1"
 android:layout_width="match_parent"
 android:layout_height="wrap_content">
</fragment>
 
</RelativeLayout>


MainActivity.java :

Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
public class MainActivity extends FragmentActivity {
 
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
 
}


Fragment1.java :

Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
public class Fragment1 extends ListFragment implements OnItemClickListener {
 
    
    private static final String TAG = Fragment1.class.getSimpleName();
 
    // Movies json url
    private static final String url = "http://api.androidhive.info/json/movies.json";
    private ProgressDialog pDialog;
    private List<Movie> movieList = new ArrayList<Movie>();
    
    
    
    String[] menutitles;
    TypedArray menuIcons;
 
    CustomAdapter adapter;
   private List<Movie> rowItems;
 
    @Override
   public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
 
        return inflater.inflate(R.layout.list_fragment, null, false);
    }
 
    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
 
        super.onActivityCreated(savedInstanceState);
 
 
        JsonArrayRequest movieReq = new JsonArrayRequest(url,
                new Response.Listener<JSONArray>() {
                    @Override
                    public void onResponse(JSONArray response) {
                        Log.d(TAG, response.toString());
                        hidePDialog();
 
                        // Parsing json
                        for (int i = 0; i < response.length(); i++) {
                            try {
 
                                JSONObject obj = response.getJSONObject(i);
                                Movie movie = new Movie();
                                movie.setTitle(obj.getString("title"));
                                movie.setThumbnailUrl(obj.getString("image"));
                                movie.setRating(((Number) obj.get("rating"))
                                        .doubleValue());
                                movie.setYear(obj.getInt("releaseYear"));
 
                                // Genre is json array
                                JSONArray genreArry = obj.getJSONArray("genre");
                                ArrayList<String> genre = new ArrayList<String>();
                                for (int j = 0; j < genreArry.length(); j++) {
                                    genre.add((String) genreArry.get(j));
                                }
                                movie.setGenre(genre);
 
                                // adding movie to movies array
                                movieList.add(movie);
 
                            } catch (JSONException e) {
                                e.printStackTrace();
                            }
 
                        }
 
                        // notifying list adapter about data changes
                        // so that it renders the list view with updated data
                        adapter.notifyDataSetChanged();
                    }
                }, new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        VolleyLog.d(TAG, "Error: " + error.getMessage());
                        hidePDialog();
 
                    }
                });
 
        // Adding request to request queue
        
        AppController.getInstance().addToRequestQueue(movieReq);
        
        
        adapter = new CustomAdapter(getActivity(), rowItems);
        setListAdapter(adapter);
        getListView().setOnItemClickListener(this);
 
    }
 
    
    @Override
    public void onDestroy() {
        super.onDestroy();
        hidePDialog();
    }
 
    private void hidePDialog() {
        if (pDialog != null) {
            pDialog.dismiss();
            pDialog = null;
        }
    }
    
    
    
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position,
            long id) {
 
        Toast.makeText(getActivity(), menutitles[position], Toast.LENGTH_SHORT)
                .show();
 
    }
 
}

list_fragment.xml :

Кликните здесь для просмотра всего текста
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
      xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:orientation="vertical" >
 
     <ListView
         android:id="@android:id/list"
         android:layout_width="fill_parent"
         android:layout_height="wrap_content"
         android:divider="@color/list_divider"
         android:dividerHeight="1dp"
         android:listSelector="@drawable/list_row_selector" >
     </ListView>
 
</LinearLayout>


list_row.xml :

Кликните здесь для просмотра всего текста
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/list_row_selector"
    android:padding="8dp" >
 
    <!-- Thumbnail Image -->
    <com.android.volley.toolbox.NetworkImageView
        android:id="@+id/thumbnail"
        android:layout_width="80dp"
        android:layout_height="80dp"
        android:layout_alignParentLeft="true"
        android:layout_marginRight="8dp" />
 
    <!-- Movie Title -->
    <TextView
        android:id="@+id/title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignTop="@+id/thumbnail"
        android:layout_toRightOf="@+id/thumbnail"
        android:textSize="@dimen/title"
        android:textStyle="bold" />
 
    <!-- Rating -->
    <TextView
        android:id="@+id/rating"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/title"
        android:layout_marginTop="1dip"
        android:layout_toRightOf="@+id/thumbnail"
        android:textSize="@dimen/rating" />
    
    <!-- Genre -->
    <TextView
        android:id="@+id/genre"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/rating"
        android:layout_marginTop="5dp"
        android:layout_toRightOf="@+id/thumbnail"
        android:textColor="@color/genre"
        android:textSize="@dimen/genre" />
 
    <!-- Release Year -->
    <TextView
        android:id="@+id/releaseYear"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:textColor="@color/year"
        android:textSize="@dimen/year" />
 
</RelativeLayout>


CustomAdapter.java :

Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
public class CustomAdapter extends BaseAdapter {
 
    Context context;
    ImageLoader imageLoader = AppController.getInstance().getImageLoader();
    private List<Movie> movieItems;
    CustomAdapter(Context context, List<Movie> rowItem) {
        this.context = context;
        this.movieItems = rowItem;
 
    }
 
    @Override
   public int getCount() {
 
        return movieItems.size();
    }
 
   @Override
    public Object getItem(int position) {
 
        return movieItems.get(position);
    }
 
   @Override
   public long getItemId(int position) {
 
        return movieItems.indexOf(getItem(position));
    }
 
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
 
        if (convertView == null) {
            LayoutInflater mInflater = (LayoutInflater) context
                    .getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
            convertView = mInflater.inflate(R.layout.list_row, null);
        }
 
        
        if (imageLoader == null)
            imageLoader = AppController.getInstance().getImageLoader();
        NetworkImageView thumbNail = (NetworkImageView) convertView
                .findViewById(R.id.thumbnail);
        TextView title = (TextView) convertView.findViewById(R.id.title);
        TextView rating = (TextView) convertView.findViewById(R.id.rating);
        TextView genre = (TextView) convertView.findViewById(R.id.genre);
        TextView year = (TextView) convertView.findViewById(R.id.releaseYear);
        
        
 
        
        
        
        Movie m = movieItems.get(position);
 
        
        thumbNail.setImageUrl(m.getThumbnailUrl(), imageLoader);
        
        // title
        title.setText(m.getTitle());
        
        // rating
        rating.setText("Rating: " + String.valueOf(m.getRating()));
        
        
        String genreStr = "";
        for (String str : m.getGenre()) {
            genreStr += str + ", ";
        }
        genreStr = genreStr.length() > 0 ? genreStr.substring(0,
                genreStr.length() - 2) : genreStr;
        genre.setText(genreStr);
        
        // release year
        year.setText(String.valueOf(m.getYear()));
        
        
 
        return convertView;
 
    }
 
}


Movie.java :

Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
public class Movie {
    private String title, thumbnailUrl;
    private int year;
    private double rating;
    private ArrayList<String> genre;
 
    public Movie() {
    }
 
    public Movie(String name, String thumbnailUrl, int year, double rating,
            ArrayList<String> genre) {
        this.title = name;
        this.thumbnailUrl = thumbnailUrl;
        this.year = year;
        this.rating = rating;
        this.genre = genre;
    }
 
    public String getTitle() {
        return title;
    }
 
    public void setTitle(String name) {
        this.title = name;
    }
 
    public String getThumbnailUrl() {
        return thumbnailUrl;
    }
 
    public void setThumbnailUrl(String thumbnailUrl) {
        this.thumbnailUrl = thumbnailUrl;
    }
 
    public int getYear() {
        return year;
    }
 
    public void setYear(int year) {
        this.year = year;
    }
 
    public double getRating() {
        return rating;
    }
 
    public void setRating(double rating) {
        this.rating = rating;
    }
 
    public ArrayList<String> getGenre() {
        return genre;
    }
 
    public void setGenre(ArrayList<String> genre) {
        this.genre = genre;
    }
 
}
stompbox
0 / 0 / 0
Регистрация: 16.12.2012
Сообщений: 27
26.08.2014, 23:13  [ТС]     Перевод Activity в ListFragment #4
AppController.java :

Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
public class AppController extends Application {
 
    public static final String TAG = AppController.class.getSimpleName();
 
    private RequestQueue mRequestQueue;
    private ImageLoader mImageLoader;
 
    private static AppController mInstance;
 
    @Override
    public void onCreate() {
        super.onCreate();
        mInstance = this;
    }
 
    public static synchronized AppController getInstance() {
        return mInstance;
    }
 
    public RequestQueue getRequestQueue() {
        if (mRequestQueue == null) {
            mRequestQueue = Volley.newRequestQueue(getApplicationContext());
        }
 
        return mRequestQueue;
    }
 
    public ImageLoader getImageLoader() {
        getRequestQueue();
        if (mImageLoader == null) {
            mImageLoader = new ImageLoader(this.mRequestQueue,
                    new LruBitmapCache());
        }
        return this.mImageLoader;
    }
 
    public <T> void addToRequestQueue(Request<T> req, String tag) {
        // set the default tag if tag is empty
        req.setTag(TextUtils.isEmpty(tag) ? TAG : tag);
        getRequestQueue().add(req);
    }
 
    public <T> void addToRequestQueue(Request<T> req) {
        req.setTag(TAG);
        getRequestQueue().add(req);
    }
 
    public void cancelPendingRequests(Object tag) {
        if (mRequestQueue != null) {
            mRequestQueue.cancelAll(tag);
        }
    }
}


LruBitmapCache :

Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
public class LruBitmapCache extends LruCache<String, Bitmap> implements
        ImageCache {
    public static int getDefaultLruCacheSize() {
        final int maxMemory = (int) (Runtime.getRuntime().maxMemory() / 1024);
        final int cacheSize = maxMemory / 8;
 
        return cacheSize;
    }
 
    public LruBitmapCache() {
        this(getDefaultLruCacheSize());
    }
 
    public LruBitmapCache(int sizeInKiloBytes) {
        super(sizeInKiloBytes);
    }
 
    @Override
    protected int sizeOf(String key, Bitmap value) {
        return value.getRowBytes() * value.getHeight() / 1024;
    }
 
    @Override
    public Bitmap getBitmap(String url) {
        return get(url);
    }
 
    @Override
    public void putBitmap(String url, Bitmap bitmap) {
        put(url, bitmap);
    }
}


Немного подправил код, стектрейс изменился (выкладываю самое основное):

Кликните здесь для просмотра всего текста
08-26 18:55:30.232: E/AndroidRuntime(5307): FATAL EXCEPTION: main
08-26 18:55:30.232: E/AndroidRuntime(5307): java.lang.RuntimeException: Unable to start activity ComponentInfo{geek.geek.info/geek.geek.info.MainActivity}: java.lang.NullPointerException
08-26 18:55:30.232: E/AndroidRuntime(5307): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
08-26 18:55:30.232: E/AndroidRuntime(5307): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
08-26 18:55:30.232: E/AndroidRuntime(5307): at android.app.ActivityThread.access$600(ActivityThread.java:130)
08-26 18:55:30.232: E/AndroidRuntime(5307): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
08-26 18:55:30.232: E/AndroidRuntime(5307): at android.os.Handler.dispatchMessage(Handler.java:99)
08-26 18:55:30.232: E/AndroidRuntime(5307): at android.os.Looper.loop(Looper.java:137)
08-26 18:55:30.232: E/AndroidRuntime(5307): at android.app.ActivityThread.main(ActivityThread.java:4745)
08-26 18:55:30.232: E/AndroidRuntime(5307): at java.lang.reflect.Method.invokeNative(Native Method)
08-26 18:55:30.232: E/AndroidRuntime(5307): at java.lang.reflect.Method.invoke(Method.java:511)
08-26 18:55:30.232: E/AndroidRuntime(5307): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
08-26 18:55:30.232: E/AndroidRuntime(5307): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
08-26 18:55:30.232: E/AndroidRuntime(5307): at dalvik.system.NativeStart.main(Native Method)
08-26 18:55:30.232: E/AndroidRuntime(5307): Caused by: java.lang.NullPointerException
08-26 18:55:30.232: E/AndroidRuntime(5307): at geek.geek.info.Fragment1.onActivityCreated(Fragment1.java:110)
08-26 18:55:30.232: E/AndroidRuntime(5307): at android.support.v4.app.Fragment.performActivityCreated(Fragment.java:1508)
08-26 18:55:30.232: E/AndroidRuntime(5307): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:947)
08-26 18:55:30.232: E/AndroidRuntime(5307): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104)
08-26 18:55:30.232: E/AndroidRuntime(5307): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1086)
08-26 18:55:30.232: E/AndroidRuntime(5307): at android.support.v4.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:1884)
08-26 18:55:30.232: E/AndroidRuntime(5307): at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:566)
08-26 18:55:30.232: E/AndroidRuntime(5307): at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1163)
08-26 18:55:30.232: E/AndroidRuntime(5307): at android.app.Activity.performStart(Activity.java:5018)
08-26 18:55:30.232: E/AndroidRuntime(5307): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2032)
08-26 18:55:30.232: E/AndroidRuntime(5307): ... 11 more


Ошибка at geek.geek.info.Fragment1.onActivityCreated(Fragment1.java:110) ругается на AppController.getInstance().addToRequestQueue(movieReq) в Fragment1.java
KillAndEat
63 / 63 / 8
Регистрация: 17.05.2013
Сообщений: 286
27.08.2014, 15:34     Перевод Activity в ListFragment #5
activity_main.xml

Кликните здесь для просмотра всего текста
XML
1
2
3
4
5
6
7
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    tools:ignore="MergeRootFrame" />


MainActivity.java

Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
public class MainActivity extends FragmentActivity {
 
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        getFragmentManager().beginTransaction().add(R.id.container, new Fragment1()).commit();
    }
 
}



Вот так попробуйте
stompbox
0 / 0 / 0
Регистрация: 16.12.2012
Сообщений: 27
27.08.2014, 20:25  [ТС]     Перевод Activity в ListFragment #6
Попробывал, почти ничего не изменилось.

Лог:

Кликните здесь для просмотра всего текста
E/AndroidRuntime(1311): FATAL EXCEPTION: main
E/AndroidRuntime(1311): java.lang.RuntimeException: Unable to start activity ComponentInfo{geek.geek.info/geek.geek.info.MainActivity}: java.lang.NullPointerException
E/AndroidRuntime(1311): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
E/AndroidRuntime(1311): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
E/AndroidRuntime(1311): at android.app.ActivityThread.access$600(ActivityThread.java:130)
E/AndroidRuntime(1311): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
E/AndroidRuntime(1311): at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(1311): at android.os.Looper.loop(Looper.java:137)
E/AndroidRuntime(1311): at android.app.ActivityThread.main(ActivityThread.java:4745)
E/AndroidRuntime(1311): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(1311): at java.lang.reflect.Method.invoke(Method.java:511)
E/AndroidRuntime(1311): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
E/AndroidRuntime(1311): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
E/AndroidRuntime(1311): at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime(1311): Caused by: java.lang.NullPointerException
E/AndroidRuntime(1311): at info.geek.geek.info.adater.CustomAdapter.getCount(CustomAdapter.java:35)
E/AndroidRuntime(1311): at android.widget.ListView.setAdapter(ListView.java:460)
E/AndroidRuntime(1311): at android.app.ListFragment.setListAdapter(ListFragment.java:240)
E/AndroidRuntime(1311): at geek.geek.info.Fragment1.onActivityCreated(Fragment1.java:117)
E/AndroidRuntime(1311): at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:848)
E/AndroidRuntime(1311): at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1035)
E/AndroidRuntime(1311): at android.app.BackStackRecord.run(BackStackRecord.java:635)
E/AndroidRuntime(1311): at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1397)
E/AndroidRuntime(1311): at android.app.Activity.performStart(Activity.java:5017)
E/AndroidRuntime(1311): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2032)
E/AndroidRuntime(1311): ... 11 more


Как видно NullPointerException на getCount в классе CustomAdapter.java
KillAndEat
63 / 63 / 8
Регистрация: 17.05.2013
Сообщений: 286
27.08.2014, 20:47     Перевод Activity в ListFragment #7
stompbox, попробуйте заменить лист в адаптере на эррейлист или вместо этого

Java
1
 return movieItems.size();
поставить

Java
1
 return 5;
- так нельзя но запуститься должно или ошибка должна поменяться хотяб)
stompbox
0 / 0 / 0
Регистрация: 16.12.2012
Сообщений: 27
27.08.2014, 20:55  [ТС]     Перевод Activity в ListFragment #8
Произвел замену этого

Java
1
return movieItems.size();
на это

Java
1
return 5;

Новый лог ошибок (уже в CustomAdapter ругань на getItem) :

Кликните здесь для просмотра всего текста
08-27 16:52:35.886: E/AndroidRuntime(1806): FATAL EXCEPTION: main
08-27 16:52:35.886: E/AndroidRuntime(1806): java.lang.RuntimeException: Unable to start activity ComponentInfo{geek.geek.info/geek.geek.info.MainActivity}: java.lang.NullPointerException
08-27 16:52:35.886: E/AndroidRuntime(1806): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
08-27 16:52:35.886: E/AndroidRuntime(1806): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
08-27 16:52:35.886: E/AndroidRuntime(1806): at android.app.ActivityThread.access$600(ActivityThread.java:130)
08-27 16:52:35.886: E/AndroidRuntime(1806): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
08-27 16:52:35.886: E/AndroidRuntime(1806): at android.os.Handler.dispatchMessage(Handler.java:99)
08-27 16:52:35.886: E/AndroidRuntime(1806): at android.os.Looper.loop(Looper.java:137)
08-27 16:52:35.886: E/AndroidRuntime(1806): at android.app.ActivityThread.main(ActivityThread.java:4745)
08-27 16:52:35.886: E/AndroidRuntime(1806): at java.lang.reflect.Method.invokeNative(Native Method)
08-27 16:52:35.886: E/AndroidRuntime(1806): at java.lang.reflect.Method.invoke(Method.java:511)
08-27 16:52:35.886: E/AndroidRuntime(1806): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
08-27 16:52:35.886: E/AndroidRuntime(1806): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
08-27 16:52:35.886: E/AndroidRuntime(1806): at dalvik.system.NativeStart.main(Native Method)
08-27 16:52:35.886: E/AndroidRuntime(1806): Caused by: java.lang.NullPointerException
08-27 16:52:35.886: E/AndroidRuntime(1806): at geek.geek.info.adater.CustomAdapter.getItem(CustomAdapter.java:43)
08-27 16:52:35.886: E/AndroidRuntime(1806): at geek.geek.info.adater.CustomAdapter.getItemId(CustomAdapter.java:49)
08-27 16:52:35.886: E/AndroidRuntime(1806): at android.widget.AdapterView.getItemIdAtPosition(AdapterView.java:768)
08-27 16:52:35.886: E/AndroidRuntime(1806): at android.widget.AdapterView.setSelectedPositionInt(AdapterView.java:1154)
08-27 16:52:35.886: E/AndroidRuntime(1806): at android.widget.ListView.setAdapter(ListView.java:474)
08-27 16:52:35.886: E/AndroidRuntime(1806): at android.app.ListFragment.setListAdapter(ListFragment.java:240)
08-27 16:52:35.886: E/AndroidRuntime(1806): at geek.geek.info.Fragment1.onActivityCreated(Fragment1.java:117)
08-27 16:52:35.886: E/AndroidRuntime(1806): at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:848)
08-27 16:52:35.886: E/AndroidRuntime(1806): at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1035)
08-27 16:52:35.886: E/AndroidRuntime(1806): at android.app.BackStackRecord.run(BackStackRecord.java:635)
08-27 16:52:35.886: E/AndroidRuntime(1806): at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1397)
08-27 16:52:35.886: E/AndroidRuntime(1806): at android.app.Activity.performStart(Activity.java:5017)
08-27 16:52:35.886: E/AndroidRuntime(1806): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2032)
08-27 16:52:35.886: E/AndroidRuntime(1806): ... 11 more
KillAndEat
63 / 63 / 8
Регистрация: 17.05.2013
Сообщений: 286
27.08.2014, 21:15     Перевод Activity в ListFragment #9
stompbox, поставьте точку прерывания где-нибудь в конструкторе и посмотрите что находится в movieItems.

getItemId так перепишите

Java
1
2
3
4
5
@Override
   public long getItemId(int position) {
 
        return position;
    }
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.08.2014, 23:57     Перевод Activity в ListFragment
Еще ссылки по теме:

ListFragment вывод данных (adapter) - Программирование Android
Доброго дня! Я новичек в Android программировании. Попытался создать проект на основе шаблона NavigationDrawner и реализовал...

Как обновить viewpager или listfragment? - Программирование Android
Добрый день! Помогите пожалуйста разобраться в следующем вопросе. У меня есть ViewPager с FragmentPagerAdapter и десять ListFragment...

Боковое меню (Navigation Drawer) в ListFragment - Программирование Android
Вообщем нужно реализовать данный паттерн в ListFragment, и возникли некоторые вопросы. XML файл для реализации меню обрабатывается в...

Как использовать свою разметку для ListFragment? - Программирование Android
Всех с праздниками. Подскажите как использовать (какую лучше) свою разметку для ListFragment?

Как с ListFragment передать имя файла чтобы открыть его в другом Активити? - Программирование Android
Всем привет, я новичек! ломаю голову над такой задачей: Есть ListFragment со списком &quot;приборов&quot; мне надо при нажатии на нужный прибор...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
stompbox
0 / 0 / 0
Регистрация: 16.12.2012
Сообщений: 27
27.08.2014, 23:57  [ТС]     Перевод Activity в ListFragment #10
Так, getItemId я изменил. Не помогло.

Выяснил, что вроде как (ведь movieList.add, а не rowItems.add в Fragment1.java)
Java
1
adapter = new CustomAdapter(getActivity(), rowItems);
Должно быть
Java
1
adapter = new CustomAdapter(getActivity(), movieList);
Т.к. по отладке в CustomAdapter при rowItems значение null, а при movieList выдает:

Java
1
2
3
4
  movieList = ArraList (id=********)
  array = Object[0]
  modCount = 0
  size = 0
Но в CustomAdapter в this.movieList = rowItem, rowItem и movieList = null.

Права в манифесте на INTERNET есть, файл JSON тоже есть. А данных нет.

Добавлено через 7 минут
Самое странное очистил проект, произвел запуск, вернул
Java
1
return movieItems.size();
и все заработало.

Хотя по отладке показывает movieList = null
Yandex
Объявления
27.08.2014, 23:57     Перевод Activity в ListFragment
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru