【问题标题】:Get ConstraintLayout in a Fragment在 Fragment 中获取 ConstraintLayout
【发布时间】:2020-05-30 14:05:26
【问题描述】:

早安,

我想在 Fragment 中获得一个 ConstraintLayout,但是在调试它时会打印 这个错误 `

java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“int androidx.constraintlayout.widget.ConstraintLayout.getChildCount()”

在这条线上

constraintSet.clone(constraintLayout);

所以这是我用于片段的活动以及片段的代码下方

片段活动:

 <?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.something.fragments.Fragment"
    android:id="@+id/this_fragment">

...



</androidx.constraintlayout.widget.ConstraintLayout>

这里是我的代码:

public class Fragment extends AppCompatDialogFragment {

View view;

@SuppressLint("InflateParams")
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
    final AlertDialog.Builder builder = new AlertDialog.Builder(Objects.requireNonNull(getActivity()), R.style.Some_Theme_Name);
    LayoutInflater inflater = getActivity().getLayoutInflater();
    view = inflater.inflate(R.layout.fragment_activity, null);

    ConstraintLayout constraintLayout = getActivity().findViewById(R.id.this_fragment);
    ConstraintSet constraintSet = new ConstraintSet();
    constraintSet.clone(constraintLayout);


    return builder.create();
}

}

非常感谢您的帮助

【问题讨论】:

  • 我建议覆盖 onCreateView()onViewCreated() 并在那里进行与视图相关的工作。 onViewCreated() 尤其会为您提供一个非空视图以用于 findViewById。
  • 感谢您的帮助,但是在这里用 view 替换 getActivity() 会有所帮助,因为我已经将 view 用于其他 findViewByIds,但是没有看到
  • 嗨@Tester2389,如果它有效,你能接受我的回答吗

标签: android android-studio android-fragments android-fragmentactivity android-dialogfragment


【解决方案1】:

试试这个方法:

    ConstraintLayout constraintLayout = view.findViewById(R.id.this_fragment);
    ConstraintSet constraintSet = new ConstraintSet();
    constraintSet.clone(constraintLayout);

【讨论】:

  • 啊,谢谢,不再使用视图了,因为我曾经遇到过一个奇怪的问题,谢谢
猜你喜欢
  • 1970-01-01
  • 2021-05-07
  • 2016-07-19
  • 2021-10-18
  • 2019-05-26
  • 1970-01-01
  • 2013-09-07
  • 1970-01-01
相关资源
最近更新 更多