所以我为我的国际片段创建了一个自定义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
答案 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;
此外,在视频中,适配器布局有ImageView
和TextView
,活动只有<fragment>
。没有Fragment布局XML