android程序的新手。在过去的3天里,我一直在学习教程,并且感觉自己得到了它的主要部分。每次我尝试运行以下代码时,android都会在打开之前强制退出。我得到了其他更简单的片段,但这让我很困惑。根本没有打印错误,可能是因为它立即关闭。任何帮助都会得到很大的帮助。
编辑:使用调试器我能够获得一个
"InflateException: Binary XML file #9: Error inflating class fragment. 它在折叠代码之后停止:
lv = (ListView) view.findViewById(R.id.lvMain);Frag_MainList.java
public class Frag_MainList extends Fragment implements OnItemClickListener, OnItemLongClickListener{
ListView lv;
ImageView ivAddNote;
Communicator communicator;
Adapter_SQL database = new Adapter_SQL(getActivity());
ArrayList<Element> list;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.frag_mainlist, container, false);
lv = (ListView) view.findViewById(R.id.lvMain);
database.open();
list = database.getChildrenLess();
database.close();
Adapter_List adapter = new Adapter_List(getActivity(), list);
lv.setAdapter(adapter);
lv.setOnItemClickListener(this);
lv.setOnItemLongClickListener(this);
return view;
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
}
@Override
public boolean onItemLongClick(AdapterView<?> arg0, View arg1, int pos, long arg3) {
communicator.SendID(pos);
return true;
}
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int pos, long arg3) {
database.open();
database.switchComplete(list.get(pos).id);
database.close();
}
public void setCommunicator(Communicator communicator){
this.communicator = communicator;
}
public interface Communicator{
public void SendID(int index);
}
}Activity_Main.java
public class Activity_Main extends Activity implements Frag_MainList.Communicator{
Frag_MainList frag1;
Frag_ListChildren frag_children;
FragmentManager manager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
manager = getFragmentManager();
frag1 = (Frag_MainList) manager.findFragmentById(R.id.fMainList);
frag1.setCommunicator(this);
}
@Override
public void SendID(int index) {
frag_children = (Frag_ListChildren) manager.findFragmentById(R.id.fListChildren);
if (frag_children != null && frag_children.isVisible()){
frag_children.displayChildren(index);
}else{
Intent intent = new Intent("com.likwid.wishlist.LISTCHILDREN");
intent.putExtra("id", index);
startActivity(intent);
}
}
}frag_mainlist.xml
<?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="@+id/lvMain"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</ListView>
</LinearLayout>activity_main.xml
<?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="wrap_content"
android:background="#00BBFF"
android:orientation="horizontal"
android:id="@+id/main_layout" >
<fragment
android:id="@+id/fMainList"
android:name="com.likwid.wishlist.Frag_MainList"
android:layout_width="wrap_content"
android:layout_height="match_parent" />
</LinearLayout>发布于 2014-02-09 18:27:27
我想通了。似乎问题出在数据库上。在实际创建活动之前,将调用getActivity in Frag_MainList。将getActivity放入"onActivityCreated“方法允许正确调用getActivity,并且似乎消除了它所造成的所有问题。我认为它显示碎片错误的原因是碎片是错误的,使它不可能膨胀。谢谢大家!
https://stackoverflow.com/questions/21655053
复制相似问题