我在Google Play商店中有一个应用程序。我通过Crashlytics / Fabric收到崩溃通知,因此我没有真正的LogCat可供参考。另外,我无法弄清楚如何在我自己的系统上复制这个bug。
我从Crashlytics获得的错误如下:
com.company.appname.Fragment.onCreateView(Fragment.java:48)
这里是班级宣言的相关细节:
import android.support.v4.app.Fragment;
public class MyTypeFragment extends Fragment {...
这里是片段中该部分的代码:
44 mRestartButton = (Button)contentView.findViewById(R.id.restart_button);
45 mRestartButton.setTypeface(regularTf);
46 mRestartButton.setOnClickListener(new View.OnClickListener() {
47 @Override
48 public void onClick(View v) {
49 getFragmentManager().popBackStack("startingFragment", 0);
50 }
51 });
我觉得有趣的是,崩溃报告将崩溃列为onCreateView()
方法,但第48行是我按钮上的onClick()
方法的声明{{1 }}。
我已经查看了以下问题:
在访问此片段的XML时,它们似乎都表明问题与不正确的onClickListener
有关。但是,我不认为这是一个问题,因为这是这个片段的XML部分(并且这个片段只有一个布局):
id
有一件事可能会引起关注:我对我的许多片段使用了相同的范例。该应用程序的功能是深入研究一系列问题以获得答案。 &#34;重置&#34;按钮允许他们一直回到开头而不经过他们沿途看到的任何中间片段。每个片段都有一个按钮,以<LinearLayout
android:layout_height="match_parent"
android:layout_width="match_parent"
android:orientation="vertical"
>
<Button
android:id="@+id/restart_button"
android:layout_gravity="right"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:paddingBottom="8dp"
android:paddingTop="8dp"
android:text="Restart"
/>
命名。正如我所说的那样,我试图在我的问题上复制这个问题并且无法弄清楚它是如何发生的。
我已经阅读了一些内容,表明这个问题可能与片段某种程度上脱离其活动有关,但我甚至试图离开我的应用并返回,但仍无法复制这个错误。
答案 0 :(得分:0)
我认为代码适用于许多设备,并且该错误不易重现。我唯一的推荐是我自己的编码技术是将发布的代码移到onViewCreated
()方法而不是onCreateView
()。原因是有时 onCreateView无法及时完成处理GUI布局。至少,这很容易尝试。祝你用不同的设备进行测试。
示例代码:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.list_layout, container, false);
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
Context thisContext = view.getContext();
mRestartButton = (Button) view.findViewById(R.id.restart_button);
mRestartButton.setTypeface(regularTf);
mRestartButton.setOnClickListener(new View.OnClickListener() {
...
注意:
onCreateView
()更改为仅返回根视图以传递到onViewCreated
()onViewCreated
()现在正在进行用户界面工作。