【问题标题】:IllegalStateException No view found forFragment while replacing fragment in activityIllegalStateException 在替换活动中的片段时未找到 forFragment 的视图
【发布时间】:2019-06-05 14:35:45
【问题描述】:

我正在尝试制作一个活动,其中两个片段一个接一个地显示。下面是我的活动和片段代码。

主活动

public class DeliveryActivity extends BaseActivity {

private static final String ROOT_FRAG = "root_fragment";

@Override
protected int layoutRes() {
    return R.layout.activity_delivery;
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    if (savedInstanceState == null)

    getSupportFragmentManager()
    .beginTransaction().add(R.id.fl_container,
                new DeliveryListFragment())
    .addToBackStack(ROOT_FRAG).commit();
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}

public void navigateToDetailsScreen() {
             getSupportFragmentManager()
             .beginTransaction()
             .replace(R.id.fl_container,
             new DeliveryDetailFragment()).commit();
}

}

BaseActivity.java

public abstract class BaseActivity extends DaggerAppCompatActivity {

@LayoutRes
protected abstract int layoutRes();

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(layoutRes());
}

}

activity_delivery.xml

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/fl_container"
android:layout_width="match_parent"
android:layout_height="match_parent" />

当我添加第一个片段时,容器很好并且允许添加,但是当我尝试替换片段(第二个片段)时,它给了我以下错误。

java.lang.IllegalArgumentException: No view found for id 0x7f08004c (com.assessment.project:id/fl_container) for fragment SecondFragment{15674f3 #2 id=0x7f08004c}

【问题讨论】:

  • 您从哪里拨打#navigateToDetailsScreen()?

标签: java android fragment containers illegalstateexception


【解决方案1】:

我觉得你的功能应该是这样的

public void navigateToDetailsScreen(View view) {
             getSupportFragmentManager()
             .beginTransaction()
             .replace(R.id.fl_container,
             new DeliveryDetailFragment()).commit();
}

【讨论】:

  • 你为什么这么认为?以及为什么未使用参数View view?
  • 如果他使用 'onClick' 作为 xml 文件的触发器,他必须在他的方法中使用 view 作为参数,即使它没有被使用,否则它会产生崩溃并且崩溃的名称是 IllegalStateException
猜你喜欢
  • 2015-07-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-20
相关资源
最近更新 更多