- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 ListView ,每个项目加载一个 fragment ,其中包括另一个 fragment 。第一次充电没问题,但是当我返回到 lisview 并重新加载另一个 fragment (或相同 fragment )时,我在线上收到此错误:
view = inflater.inflate(R.layout.fragment_text_receiver, container, false);
错误:
01-11 15:40:59.940: E/AndroidRuntime(14700): FATAL EXCEPTION: main
01-11 15:40:59.940: E/AndroidRuntime(14700): android.view.InflateException: Binary XML file line #43: Error inflating class fragment
01-11 15:40:59.940: E/AndroidRuntime(14700): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)
01-11 15:40:59.940: E/AndroidRuntime(14700): at android.view.LayoutInflater.rInflate(LayoutInflater.java:746)
01-11 15:40:59.940: E/AndroidRuntime(14700): at android.view.LayoutInflater.rInflate(LayoutInflater.java:749)
01-11 15:40:59.940: E/AndroidRuntime(14700): at android.view.LayoutInflater.rInflate(LayoutInflater.java:749)
01-11 15:40:59.940: E/AndroidRuntime(14700): at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
01-11 15:40:59.940: E/AndroidRuntime(14700): at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
01-11 15:40:59.940: E/AndroidRuntime(14700): at com.gzanitti.tsar.fragments.ReceiverFragment.onCreateView(ReceiverFragment.java:70)
01-11 15:40:59.940: E/AndroidRuntime(14700): at android.support.v4.app.Fragment.performCreateView(Fragment.java:1500)
01-11 15:40:59.940: E/AndroidRuntime(14700): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:927)
01-11 15:40:59.940: E/AndroidRuntime(14700): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104)
01-11 15:40:59.940: E/AndroidRuntime(14700): at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
01-11 15:40:59.940: E/AndroidRuntime(14700): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1467)
01-11 15:40:59.940: E/AndroidRuntime(14700): at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:440)
01-11 15:40:59.940: E/AndroidRuntime(14700): at android.os.Handler.handleCallback(Handler.java:615)
01-11 15:40:59.940: E/AndroidRuntime(14700): at android.os.Handler.dispatchMessage(Handler.java:92)
01-11 15:40:59.940: E/AndroidRuntime(14700): at android.os.Looper.loop(Looper.java:137)
01-11 15:40:59.940: E/AndroidRuntime(14700): at android.app.ActivityThread.main(ActivityThread.java:4898)
01-11 15:40:59.940: E/AndroidRuntime(14700): at java.lang.reflect.Method.invokeNative(Native Method)
01-11 15:40:59.940: E/AndroidRuntime(14700): at java.lang.reflect.Method.invoke(Method.java:511)
01-11 15:40:59.940: E/AndroidRuntime(14700): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1006)
01-11 15:40:59.940: E/AndroidRuntime(14700): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773)
01-11 15:40:59.940: E/AndroidRuntime(14700): at dalvik.system.NativeStart.main(Native Method)
01-11 15:40:59.940: E/AndroidRuntime(14700): Caused by: java.lang.IllegalArgumentException: Binary XML file line #43: Duplicate id 0x7f050069, tag null, or parent id 0x0 with another fragment for com.gzanitti.tsar.fragments.CommentsFragment
01-11 15:40:59.940: E/AndroidRuntime(14700): at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:296)
01-11 15:40:59.940: E/AndroidRuntime(14700): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:676)
01-11 15:40:59.940: E/AndroidRuntime(14700): ... 21 more
我不知道会发生什么。 XML 文件第 34 行是声明 fragment 的地方:
<fragment
android:id="@+id/fragmentComments"
android:name="com.gzanitti.tsar.fragments.CommentsFragment"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/txtReceiverText"
android:layout_alignParentBottom="true"
android:layout_alignRight="@+id/txtReceiverText"
android:layout_alignTop="@+id/txtReceiverTitle"/>
也许ID重复有问题?某种形式的“释放”?
编辑 1:fragment_text_receiver.xml
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/scrollView1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:fillViewport="true"
tools:context=".ReceiverActivity" >
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center" >
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin" >
<EditText
android:id="@+id/txtReceiverTitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:ems="10"
android:hint="@string/insertTitle" />
<EditText
android:id="@+id/txtReceiverText"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/txtReceiverTitle"
android:layout_centerHorizontal="true"
android:layout_marginTop="10dp"
android:ems="10"
android:gravity="center_vertical|top"
android:hint="@string/shareText"
android:inputType="textMultiLine" />
<fragment
android:id="@+id/fragmentComments"
android:name="com.gzanitti.tsar.fragments.CommentsFragment"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/txtReceiverText"
android:layout_alignParentBottom="true"
android:layout_alignRight="@+id/txtReceiverText"
android:layout_alignTop="@+id/txtReceiverTitle"/>
</RelativeLayout>
<FrameLayout
android:id="@+id/frameComments"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignWithParentIfMissing="true" >
<TextView
android:id="@+id/txtShowComments"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:gravity="center"
android:text="@string/showComments"
android:textAlignment="center" />
</FrameLayout>
</RelativeLayout>
</ScrollView>
编辑 2:receiverFragment.java
public class ReceiverFragment extends Fragment {
public static final int RECEIVER_FRAGMENT = 5;
public static String s3Name;
public static int post_id;
public static String title;
public static String text;
public static int type;
public static File filePath;
protected MediaPlayer mPlayer;
protected View view;
public CommentsFragment fragmentComments;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SesionActivity.actualFragment = RECEIVER_FRAGMENT;
setHasOptionsMenu(true);
title = getArguments().getString("notifTitle");
text = getArguments().getString("notifText");
post_id = getArguments().getInt("notifPostID");
CommentsFragment.post_id = post_id;
type = getArguments().getInt("notifType");
s3Name = getArguments().getString("s3Name");
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
view = inflater.inflate(R.layout.fragment_text_receiver, container, false);
EditText txtTextReceiverTitle = (EditText) view.findViewById(R.id.txtReceiverTitle);
txtTextReceiverTitle.setKeyListener(null);
txtTextReceiverTitle.setText(title);
EditText txtTextReceiver = (EditText) view.findViewById(R.id.txtReceiverText);
txtTextReceiver.setKeyListener(null);
txtTextReceiver.setText(text);
FrameLayout frameComments = (FrameLayout) view.findViewById(R.id.frameComments);
frameComments.setOnClickListener(new OnClickReceiverFragmentListener(getActivity(), this));
FragmentManager fManager = getActivity().getSupportFragmentManager();
fragmentComments = (CommentsFragment) fManager.findFragmentById(R.id.fragmentComments);
fManager.beginTransaction().hide(fragmentComments).commit();
return view;
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
getActivity().getMenuInflater().inflate(R.menu.receiver, menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.btnSpread:
spreadData();
return true;
case R.id.btnCancel:
deleteInSQL();
backToPendingFragment();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
private void spreadData() {
final SesionActivity sActivity = (SesionActivity) getActivity();
sActivity.pDialog = new ProgressDialog(getActivity());
sActivity.pDialog.setTitle(getText(R.string.spreading));
sActivity.pDialog.setMessage(getText(R.string.wait));
sActivity.pDialog.setCancelable(false);
sActivity.pDialog.show();
new Thread(new Runnable() {
@Override
public void run() {
TsarServer tServer = new TsarServer(sActivity);
boolean result = tServer.spread(Integer.toString(ReceiverFragment.post_id), ReceiverFragment.title, ReceiverFragment.text,
ReceiverFragment.type, ReceiverFragment.s3Name);
Message msg = new Message();
msg.obj = result;
puenteReceiver.sendMessage(msg);
}
}).start();
}
private Handler puenteReceiver = new Handler(new Handler.Callback() {
@Override
public boolean handleMessage(Message msg) {
boolean resPost = (Boolean) msg.obj;
((SesionActivity)getActivity()).pDialog.dismiss();
if(resPost) {
Toast.makeText(getActivity(), R.string.okPost, Toast.LENGTH_LONG).show();
deleteSource();
deleteInSQL();
backToPendingFragment();
} else {
Toast.makeText(getActivity(), R.string.errorPost, Toast.LENGTH_LONG).show();
}
return true;
}
});
private void deleteSource() {
if(ReceiverFragment.filePath != null) {
File file = new File(ReceiverFragment.filePath.toString());
file.delete();
}
}
private void deleteInSQL() {
PendingSQL sql = new PendingSQL(getActivity(), "dbPending", null, 1);
SQLiteDatabase db = sql.getWritableDatabase();
String[] args = new String[]{Integer.toString(ReceiverFragment.post_id)};
db.delete("pending", "postID=?", args);
}
private void backToPendingFragment() {
PendingFragment pendingFragment = new PendingFragment();
FragmentManager fManager = getActivity().getSupportFragmentManager();
fManager.popBackStack();
fManager.beginTransaction().replace(R.id.content_frame, pendingFragment).commit();
}
类 OnClickReceiverFragmentListener 实现 OnClickListener{
private FragmentActivity mActivity;
private ReceiverFragment mFragment;
public OnClickReceiverFragmentListener(FragmentActivity activity, ReceiverFragment fragment) {
this.mActivity = activity;
this.mFragment = fragment;
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btnPlay:
ImageButton btnPlay = ((ImageButton) mActivity.findViewById(R.id.btnPlay));
if(btnPlay.isEnabled()) {
mFragment.mPlayer.start();
}
break;
case R.id.btnPause:
ImageButton btnPause = ((ImageButton) mActivity.findViewById(R.id.btnPause));
if(btnPause.isEnabled()) {
mFragment.mPlayer.pause();
}
break;
case R.id.frameComments:
TextView txtComments = (TextView) v.findViewById(R.id.txtShowComments);
FragmentManager fManager = mFragment.getFragmentManager();
if(CommentsFragment.isOpen) {
CommentsFragment.isOpen = false;
txtComments.setText("Show comments");
fManager.beginTransaction()
.setCustomAnimations(R.anim.abc_slide_in_bottom, R.anim.abc_slide_out_bottom)
.hide(mFragment.fragmentComments)
.commit();
} else {
CommentsFragment.isOpen = true;
txtComments.setText("Hide comments");
fManager.beginTransaction()
.setCustomAnimations(R.anim.abc_slide_in_bottom, R.anim.abc_slide_out_bottom)
.show(mFragment.fragmentComments)
.commit();
}
break;
default:
break;
}
}
}
第一次运行正常,但是当我回来尝试加载另一个时,出现了这个错误
最佳答案
解决方案是在框架父分离时强制删除子 fragment 。
@Override
public void onDetach() {
super.onDetach();
getActivity().getSupportFragmentManager().beginTransaction().remove(fragmentComments).commit();
}
关于android - inflater.inflate 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21066499/
我已经使用 vue-cli 两个星期了,直到今天一切正常。我在本地建立这个项目。 https://drive.google.com/open?id=0BwGw1zyyKjW7S3RYWXRaX24tQ
您好,我正在尝试使用 python 库 pytesseract 从图像中提取文本。请找到代码: from PIL import Image from pytesseract import image_
我的错误 /usr/bin/ld: errno: TLS definition in /lib/libc.so.6 section .tbss mismatches non-TLS reference
我已经训练了一个模型,我正在尝试使用 predict函数但它返回以下错误。 Error in contrasts<-(*tmp*, value = contr.funs[1 + isOF[nn]])
根据Microsoft DataConnectors的信息我想通过 this ODBC driver 创建一个从 PowerBi 到 PostgreSQL 的连接器使用直接查询。我重用了 Micros
我已经为 SoundManagement 创建了一个包,其中有一个扩展 MediaPlayer 的类。我希望全局控制这个变量。这是我的代码: package soundmanagement; impo
我在Heroku上部署了一个应用程序。我正在使用免费服务。 我经常收到以下错误消息。 PG::Error: ERROR: out of memory 如果刷新浏览器,就可以了。但是随后,它又随机发生
我正在运行 LAMP 服务器,这个 .htaccess 给我一个 500 错误。其作用是过滤关键字并重定向到相应的域名。 Options +FollowSymLinks RewriteEngine
我有两个驱动器 A 和 B。使用 python 脚本,我在“A”驱动器中创建一些文件,并运行 powerscript,该脚本以 1 秒的间隔将驱动器 A 中的所有文件复制到驱动器 B。 我在 powe
下面的函数一直返回这个错误信息。我认为可能是 double_precision 字段类型导致了这种情况,我尝试使用 CAST,但要么不是这样,要么我没有做对...帮助? 这是错误: ERROR: i
这个问题已经有答案了: Syntax error due to using a reserved word as a table or column name in MySQL (1 个回答) 已关闭
我的数据库有这个小问题。 我创建了一个表“articoli”,其中包含商品的品牌、型号和价格。 每篇文章都由一个 id (ID_ARTICOLO)` 定义,它是一个自动递增字段。 好吧,现在当我尝试插
我是新来的。我目前正在 DeVry 在线学习中级 C++ 编程。我们正在使用 C++ Primer Plus 这本书,到目前为止我一直做得很好。我的老师最近向我们扔了一个曲线球。我目前的任务是这样的:
这个问题在这里已经有了答案: What is an undefined reference/unresolved external symbol error and how do I fix it?
我的网站中有一段代码有问题;此错误仅发生在 Internet Explorer 7 中。 我没有在这里发布我所有的 HTML/CSS 标记,而是发布了网站的一个版本 here . 如您所见,我在列中有
如果尝试在 USB 设备上构建 node.js 应用程序时在我的树莓派上使用 npm 时遇到一些问题。 package.json 看起来像这样: { "name" : "node-todo",
在 Python 中,您有 None单例,在某些情况下表现得很奇怪: >>> a = None >>> type(a) >>> isinstance(a,None) Traceback (most
这是我的 build.gradle (Module:app) 文件: apply plugin: 'com.android.application' android { compileSdkV
我是 android 的新手,我的项目刚才编译和运行正常,但在我尝试实现抽屉导航后,它给了我这个错误 FAILURE: Build failed with an exception. What wen
谁能解释一下?我想我正在做一些非常愚蠢的事情,并且急切地等待着启蒙。 我得到这个输出: phpversion() == 7.2.25-1+0~20191128.32+debian8~1.gbp108
我是一名优秀的程序员,十分优秀!