java.lang.IllegalArgumentException : No view found for id 0x7f0c0098

标签 java android

我有一个 NBA 球队列表,工作正常并正确填充球队列表,但当我单击列表中的某个项目时,它应该会膨胀另一个 fragment 以显示所选球队的描述,但当我单击时找不到fragment_descriptions id。

我使用两个列表 fragment ,一个用于团队,另一个用于玩家,为此我使用 ViewPager 和占位符 fragment (由 Android Studio 自动生成),我认为这是因为fragment_description 时的布局未膨胀:/

异常(exception):

E/AndroidRuntime: FATAL EXCEPTION: main
              Process: es.iesnervion.ejercicio52, PID: 7432
              java.lang.IllegalArgumentException: No view found for id 0x7f0c0098 (es.iesnervion.ejercicio52:id/fragment_descriptions) for fragment DescriptionFragment{8f04b31 #4 id=0x7f0c0098}
                  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1107)
                  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1295)
                  at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:801)
                  at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1682)
                  at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:541)
                  at android.os.Handler.handleCallback(Handler.java:739)
                  at android.os.Handler.dispatchMessage(Handler.java:95)
                  at android.os.Looper.loop(Looper.java:158)
                  at android.app.ActivityThread.main(ActivityThread.java:7224)
                  at java.lang.reflect.Method.invoke(Native Method)
                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)

XML

<?xml version="1.0" encoding="utf-8"?>

<!-- Pagina 1 referente a Equipos -->

<FrameLayout 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:id="@+id/fragment_team_movil"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context=".View.Activity.MainActivity">
tools:showIn="@layout/activity_main">

</FrameLayout>

主要 Activity

@Override
    public void onTeamSelected(Team team) {
        DescriptionFragment descriptionFragment = (DescriptionFragment) getSupportFragmentManager()
                .findFragmentById(R.id.fragment_descriptions);

        if (descriptionFragment != null) {

            descriptionFragment.updateDescriptionView(team);
        } else {
            DescriptionFragment newDescriptionFragment = new DescriptionFragment();

            Bundle args = new Bundle();
            args.putParcelable(DescriptionFragment.ARG_TEAM, team);

            newDescriptionFragment.setArguments(args);
            FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();

            transaction.replace(R.id.fragment_descriptions, newDescriptionFragment);

            //Añade a la pila el fragment
            transaction.addToBackStack(null);

            transaction.commit();
        }
    }
 protected void onResume() {
        super.onResume();

        // Create the adapter that will return a fragment for each of the three
        // primary sections of the activity.
        if (manager != null)
            mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager(), manager);
        else {
            manager = new PlayerManager();
            mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());
        }

        // Set up the ViewPager with the sections adapter.
        mViewPager = (ViewPager) findViewById(R.id.container);
        mViewPager.setAdapter(mSectionsPagerAdapter);

        TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);
        tabLayout.setupWithViewPager(mViewPager);
 protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        //Edited Cambiar a false para eliminar el boton atras
         getSupportActionBar().setDisplayHomeAsUpEnabled(false);



        fab = (FloatingActionButton) findViewById(R.id.fab);
        fab.setVisibility(View.INVISIBLE);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent it = new Intent(MainActivity.this, AddPlayer.class);
                startActivityForResult(it, AddPlayer.ADDPLAYER_REQUEST);
            }
        });

    }

占位符 fragment

 public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View rootView = null;


        if (getArguments().getInt(ARG_SECTION_NUMBER) == 1) {
            rootView = inflater.inflate(R.layout.fragment_teams, container, false);

            // Comprobación del tipo de pantalla en la que está, para ello llamamos a el fragment team
            // (el .xml que deberia de salir en caso de que sea un movil y si no esta nulo significa
            // que es un movil, si de lo contrario sale una table se iniciará el otro .xml de sw620dp

            if (rootView.findViewById(R.id.fragment_team_movil) != null) {


                // Comprobamos si viene de un estado onStoped osea que sea la primera vez que se
                // ejecuta o no

                if (savedInstanceState != null)
                    return rootView;

                // Creamos una instancia del fragment lista y lo añadimos en la actividad destinada
                // para el movil.


                ListTeams list = new ListTeams();
                Intent it = new Intent();
                it = getActivity().getIntent();

                if (manager != null)
                    it.putExtra(PlayerManager.PLAYERMANAGER_NAME_KEY, manager);

                list.setArguments(it.getExtras());

                // Con FragmentManager podremos interactuar entre el fragment_movil y la clase list
                // gracias a esto pondremos todos las propiedades preparada de ese
                // fragment en el fragment
                getActivity().getSupportFragmentManager().beginTransaction().add(R.id.fragment_team_movil, list)
                        .commit();
            }

如果您需要更多信息,请告诉我或访问 Ejercicio5.2 Github ,以及 Issue #5页。

谢谢:)我一整天都遇到这个错误:(

最佳答案

我快速浏览了 github 上的项目,我认为您应该在 MainActiv 中替换这一行

transaction.replace(R.id.fragment_descriptions, newDescriptionFragment);

与此

transaction.replace(R.id.fragment_team_movil, newDescriptionFragment);

ity.java


MainActivity - line 209

关于java.lang.IllegalArgumentException : No view found for id 0x7f0c0098,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41291242/

相关文章:

Android Facebook SDK 示例 : 'your project Contains error(s), please fix them before running your application'

android - Jenkins : ionic 安卓构建失败

java - 当用户从菜单屏幕返回应用程序时,Marker InfoWindowAdapter 导致崩溃

java - 如何在重投策略后阻止消息进入Activemq中的Dead LetterQueue(DLQ)

java - Android SQLite 如果列等于用户名则列出所有数据 [帮助编写原始查询]

Java:为什么 Collection.addAll 不能接受 Iterables?

java - 如何在java中动态创建列表?

java - 一个使用 Java 解决对数数学问题的程序

android - 从 startActivityforResult 获取 resultcode -1,-1 是什么意思

java - 在 Android 中绘制 gles20 圆时的随机线条