片段错误中的ListView

时间:2017-01-19 02:55:26

标签: java android listview android-fragments

所以我为我的国际片段创建了一个自定义ListView,但点击它时应用程序不会响应。
我的XML中也出现了渲染问题,如果将其链接到当前布局,会弹出一个周期性错误。

继承我的TabInternationalFragment.java代码

package com.example.guitarista.citem;

import android.content.Context;
import android.graphics.Typeface;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.ListFragment;
import android.support.v7.widget.DefaultItemAnimator;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast;

import java.util.ArrayList;
import java.util.HashMap;


/**
 * A simple {@link Fragment} subclass.
 */
public class TabInternationalFragment extends ListFragment {

    String[] players={"Player1","Player2", "Player3"};
    int[] images = {R.drawable.custom_mf_logo,R.drawable.custom_mf_logo,R.drawable.custom_mf_logo};

    ArrayList<HashMap<String, String>> data=new ArrayList<HashMap<String, String>>() ;
    SimpleAdapter adapter;

    public TabInternationalFragment() {
        // Required empty public constructor
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View v = inflater.inflate(R.layout.fragment_tab_international, container, false);

        //code for fill
        HashMap<String, String> map = new HashMap<String, String>();
        for (int i=0;i<players.length;i++)
        {
            map = new HashMap<String, String>();
            map.put("Player", players[i] );
            map.put("Image", Integer.toString(images[i]));
            data.add(map);
        }
        String[] from={"Player", "Image"};
        int[] to = {R.id.nameTxt, R.id.imageView1};
        adapter = new SimpleAdapter(getActivity(), data, R.layout.model, from, to);
        setListAdapter(adapter);
        //--------------------------------------------
        return v;


    }

    @Override
    public void onStart(){
        super.onStart();

        getListView().setOnItemClickListener(new AdapterView.OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> av, View view, int position, long id) {
                Toast.makeText(getActivity(), data.get(position).get("Player"), Toast.LENGTH_SHORT);
            }
        });
    }



}

fragment_tab_international.xml

<?xml version="1.0" encoding="utf-8"?>
<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=".MainActivity">


    <fragment
        android:id="@+id/fragment1"
        android:name="com.example.guitarista.citem.TabInternationalFragment"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="81dp" />

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="38dp"
        android:text="Fragment Custom ListView"
        android:textAppearance="?android:attr/textAppearanceLarge"
        />

</RelativeLayout>

logcat的

01-19 10:48:14.085 16258-16258/com.example.guitarista.citem E/AndroidRuntime: FATAL EXCEPTION: main
                                                                              Process: com.example.guitarista.citem, PID: 16258
                                                                              java.lang.StackOverflowError: stack size 8MB
                                                                                  at java.lang.reflect.Constructor.newInstance(Native Method)
                                                                                  at java.lang.reflect.Constructor.newInstance(Constructor.java:288)
                                                                                  at android.view.LayoutInflater.createView(LayoutInflater.java:607)
                                                                                  at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:55)
                                                                                  at android.view.LayoutInflater.onCreateView(LayoutInflater.java:682)
                                                                                  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:741)
                                                                                  at android.view.LayoutInflater.inflate(LayoutInflater.java:482)
                                                                                  at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
                                                                                  at com.example.guitarista.citem.TabInternationalFragment.onCreateView(TabInternationalFragment.java:43)
                                                                                  at android.support.v4.app.Fragment.performCreateView(Fragment.java:2080)
                                                                                  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1065)
                                                                                  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1268)
                                                                                  at android.support.v4.app.FragmentManagerImpl.addFragment(FragmentManager.java:1370)
                                                                                  at android.support.v4.app.FragmentManagerImpl.onCreateView(FragmentManager.java:2415)
                                                                                  at android.support.v4.view.LayoutInflaterCompatHC$FactoryWrapperHC.onCreateView(LayoutInflaterCompatHC.java:44)
                                                                                  at android.view.LayoutInflater$FactoryMerger.onCreateView(LayoutInflater.java:177)
                                                                                  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:725)
                                                                                  at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
                                                                                  at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
                                                                                  at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
                                                                                  at com.example.guitarista.citem.TabInternationalFragment.onCreateView(TabInternationalFragment.java:43)
                                                                                  at android.support.v4.app.Fragment.performCreateView(Fragment.java:2080)
                                                                                  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1065)
                                                                                  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1268)
                                                                                  at android.support.v4.app.FragmentManagerImpl.addFragment(FragmentManager.java:1370)
                                                                                  at android.support.v4.app.FragmentManagerImpl.onCreateView(FragmentManager.java:2415)
                                                                                  at android.support.v4.view.LayoutInflaterCompatHC$FactoryWrapperHC.onCreateView(LayoutInflaterCompatHC.java:44)
                                                                                  at android.view.LayoutInflater$FactoryMerger.onCreateView(LayoutInflater.java:177)
                                                                                  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:725)
                                                                                  at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
                                                                                  at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
                                                                                  at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
                                                                                  at com.example.guitarista.citem.TabInternationalFragment.onCreateView(TabInternationalFragment.java:43)
                                                                                  at android.support.v4.app.Fragment.performCreateView(Fragment.java:2080)
                                                                                  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1065)
                                                                                  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1268)
                                                                                  at android.support.v4.app.FragmentManagerImpl.addFragment(FragmentManager.java:1370)
                                                                                  at android.support.v4.app.FragmentManagerImpl.onCreateView(FragmentManager.java:2415)
                                                                                  at android.support.v4.view.LayoutInflaterCompatHC$FactoryWrapperHC.onCreateView(LayoutInflaterCompatHC.java:44)
                                                                                  at android.view.LayoutInflater$FactoryMerger.onCreateView(LayoutInflater.java:177)
                                                                                  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:725)
                                                                                  at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
                                                                                  at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
                                                                                  at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
                                                                                  at com.example.guitarista.citem.TabInternationalFragment.onCreateView(TabInternationalFragment.java:43)
                                                                                  at android.support.v4.app.Fragment.performCreateView(Fragment.java:2080)
                                                                                  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1065)
                                                                                  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1268)
                                                                                at android.support.v4.app.FragmentManagerIm
01-19 10:48:14.100 16258-16258/com.example.guitarista.citem I/art: WaitForGcToComplete blocked for 7.838ms for cause Alloc
01-19 10:48:14.250 16258-16277/com.example.guitarista.citem I/art: Background partial concurrent mark sweep GC freed 118695(11MB) AllocSpace objects, 5(55MB) LOS objects, 25% free, 188MB/252MB, paused 994us total 134.540ms
01-19 10:48:14.250 16258-16258/com.example.guitarista.citem I/art: WaitForGcToComplete blocked for 130.630ms for cause Alloc
01-19 10:48:14.830 16258-16258/com.example.guitarista.citem I/art: Alloc sticky concurrent mark sweep GC freed 246886(25MB) AllocSpace objects, 9(20MB) LOS objects, 13% free, 199MB/231MB, paused 1.067ms total 54.250ms
01-19 10:48:15.100 16258-16258/com.example.guitarista.citem D/Error: ERR: exClass=java.lang.StackOverflowError
01-19 10:48:15.100 16258-16258/com.example.guitarista.citem D/Error: ERR: exMsg=stack size 8MB
01-19 10:48:15.100 16258-16258/com.example.guitarista.citem D/Error: ERR: file=Constructor.java
01-19 10:48:15.100 16258-16258/com.example.guitarista.citem D/Error: ERR: class=java.lang.reflect.Constructor
01-19 10:48:15.100 16258-16258/com.example.guitarista.citem D/Error: ERR: method=newInstance line=-2
01-19 10:48:15.125 16258-16277/com.example.guitarista.citem W/art: Suspending all threads took: 20.942ms
01-19 10:48:15.219 16258-16258/com.example.guitarista.citem D/Error: ERR: stack=java.lang.StackOverflowError: stack size 8MB
                                                                         at java.lang.reflect.Constructor.newInstance(Native Method)
                                                                         at java.lang.reflect.Constructor.newInstance(Constructor.java:288)
                                                                         at android.view.LayoutInflater.createView(LayoutInflater.java:607)
                                                                         at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:55)
                                                                         at android.view.LayoutInflater.onCreateView(LayoutInflater.java:682)
                                                                         at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:741)
                                                                         at android.view.LayoutInflater.inflate(LayoutInflater.java:482)
                                                                         at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
                                                                         at com.example.guitarista.citem.TabInternationalFragment.onCreateView(TabInternationalFragment.java:43)
                                                                         at android.support.v4.app.Fragment.performCreateView(Fragment.java:2080)
                                                                         at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1065)
                                                                         at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1268)
                                                                         at android.support.v4.app.FragmentManagerImpl.addFragment(FragmentManager.java:1370)
                                                                         at android.support.v4.app.FragmentManagerImpl.onCreateView(FragmentManager.java:2415)
                                                                         at android.support.v4.view.LayoutInflaterCompatHC$FactoryWrapperHC.onCreateView(LayoutInflaterCompatHC.java:44)
                                                                         at android.view.LayoutInflater$FactoryMerger.onCreateView(LayoutInflater.java:177)
                                                                         at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:725)
                                                                         at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
                                                                         at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
                                                                         at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
                                                                         at com.example.guitarista.citem.TabInternationalFragment.onCreateView(TabInternationalFragment.java:43)
                                                                         at android.support.v4.app.Fragment.performCreateView(Fragment.java:2080)
                                                                         at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1065)
                                                                         at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1268)
                                                                         at android.support.v4.app.FragmentManagerImpl.addFragment(FragmentManager.java:1370)
                                                                         at android.support.v4.app.FragmentManagerImpl.onCreateView(FragmentManager.java:2415)
                                                                         at android.support.v4.view.LayoutInflaterCompatHC$FactoryWrapperHC.onCreateView(LayoutInflaterCompatHC.java:44)
                                                                         at android.view.LayoutInflater$FactoryMerger.onCreateView(LayoutInflater.java:177)
                                                                         at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:725)
                                                                         at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
                                                                         at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
                                                                         at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
                                                                         at com.example.guitarista.citem.TabInternationalFragment.onCreateView(TabInternationalFragment.java:43)
                                                                         at android.support.v4.app.Fragment.performCreateView(Fragment.java:2080)
                                                                         at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1065)
                                                                         at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1268)
                                                                         at android.support.v4.app.FragmentManagerImpl.addFragment(FragmentManager.java:1370)
                                                                         at android.support.v4.app.FragmentManagerImpl.onCreateView(FragmentManager.java:2415)
                                                                         at android.support.v4.view.LayoutInflaterCompatHC$FactoryWrapperHC.onCreateView(LayoutInflaterCompatHC.java:44)
                                                                         at android.view.LayoutInflater$FactoryMerger.onCreateView(LayoutInflater.java:177)
                                                                         at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:725)
                                                                         at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
                                                                         at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
                                                                         at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
                                                                         at com.example.guitarista.citem.TabInternationalFragment.onCreateView(TabInternationalFragment.java:43)
                                                                         at android.support.v4.app.Fragment.performCreateView(Fragment.java:2080)
                                                                         at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1065)
                                                                         at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1268)
                                                                         at android.support.v4.app.FragmentManagerImpl.addFragment(FragmentManager.java:1370)
                                                                        at android.support.v4.app.F
01-19 10:48:15.221 16258-16258/com.example.guitarista.citem D/Error: ERR: TOTAL BYTES WRITTEN: 15024956
01-19 10:48:15.221 16258-16258/com.example.guitarista.citem E/JavaBinder: !!! FAILED BINDER TRANSACTION !!!
01-19 10:48:15.222 16258-16258/com.example.guitarista.citem E/AndroidRuntime: Error reporting crash
                                                                              android.os.TransactionTooLargeException
                                                                                  at android.os.BinderProxy.transactNative(Native Method)
                                                                                  at android.os.BinderProxy.transact(Binder.java:496)
                                                                                  at android.app.ActivityManagerProxy.handleApplicationCrash(ActivityManagerNative.java:4294)
                                                                                  at com.android.internal.os.RuntimeInit$UncaughtHandler.uncaughtException(RuntimeInit.java:89)
                                                                                  at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:693)
                                                                                  at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:690)
01-19 10:48:15.222 16258-16258/com.example.guitarista.citem I/Process: Sending signal. PID: 16258 SIG: 9

1 个答案:

答案 0 :(得分:0)

您自己创建了Fragment,因此您有StackOverflowError

<强> fragment_tab_international.xml

  <fragment
        android:id="@+id/fragment1"
        android:name="com.example.guitarista.citem.TabInternationalFragment"

在回复您的评论时,请重新观看您正在关注的教程。在开始编辑文件之前,请查看文件名。

此外,您使用的是ListFragment,因此,如果您要为片段使用XML文件,则需要带有android:id=@android:id/list的ListView。那是documented very-well on the ListFragment pages

  

ListFragment具有由单个列表视图组成的默认布局。但是,如果需要,可以通过从onCreateView(LayoutInflater,ViewGroup,Bundle)返回自己的视图层次结构来自定义片段布局。要执行此操作,您的视图层次结构必须包含一个ID为&#34的ListView对象; @android:id / list&#34;

此外,在视频中,适配器布局有ImageViewTextView ,活动只有<fragment>。没有Fragment布局XML