java.lang.IllegalArgumentException: 没有找到 id 0x7f0c007b 的视图 [英] java.lang.IllegalArgumentException: No view found for id 0x7f0c007b

查看:27
本文介绍了java.lang.IllegalArgumentException: 没有找到 id 0x7f0c007b 的视图的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我尝试启动一个 App 项目,现在出现以下错误.

我从我在这里找到的答案中尝试了很多,但我没有发现我的错误.

输出如下:

<前>E/AndroidRuntime:致命异常:主要进程:de.christian_heinisch.tiercheckliste,PID:28372java.lang.IllegalArgumentException:没有找到 id 0x7f0c007b 的视图(de.christian_heinisch.tiercheckliste:id/relativeLayout_for_About)对于片段 AboutFragment{5abcffb #0 id=0x7f0c007b}在 android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1102)在 android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1290)在 android.support.v4.app.BackStackRecord.run(BackStackRecord.java:801)在 android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1677)在 android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:536)在 android.os.Handler.handleCallback(Handler.java:739)在 android.os.Handler.dispatchMessage(Handler.java:95)在 android.os.Looper.loop(Looper.java:148)在 android.app.ActivityThread.main(ActivityThread.java:5466)在 java.lang.reflect.Method.invoke(Native Method)在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)I/Process:发送信号.PID:28372 SIG:9应用程序终止.

这是我的主要活动

package de.christian_heinisch.tiercheckliste;导入 android.os.Bundle;导入 android.support.design.widget.FloatingActionButton;导入 android.support.design.widget.Snackbar;导入 android.support.v4.app.FragmentManager;导入 android.support.v4.app.FragmentTransaction;导入 android.view.View;导入 android.support.design.widget.NavigationView;导入 android.support.v4.view.GravityCompat;导入 android.support.v4.widget.DrawerLayout;导入 android.support.v7.app.ActionBarDrawerToggle;导入 android.support.v7.app.AppCompatActivity;导入 android.support.v7.widget.Toolbar;导入 android.view.Menu;导入 android.view.MenuItem;导入 android.widget.Toast;公共类 MainActivity 扩展了 AppCompatActivity实现 NavigationView.OnNavigationItemSelectedListener {@覆盖protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);工具栏工具栏 = (工具栏) findViewById(R.id.toolbar);setSupportActionBar(工具栏);FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);fab.setOnClickListener(new View.OnClickListener() {@覆盖公共无效onClick(查看视图){Snackbar.make(view, "用你自己的动作替换", Snackbar.LENGTH_LONG).setAction("Action", null).show();}});DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);ActionBarDrawerToggle 切换 = 新的 ActionBarDrawerToggle(这个,抽屉,工具栏,R.string.navigation_drawer_open,R.string.navigation_drawer_close);drawer.addDrawerListener(toggle);切换.syncState();NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);navigationView.setNavigationItemSelectedListener(this);}@覆盖公共无效 onBackPressed() {DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);如果 (drawer.isDrawerOpen(GravityCompat.START)) {drawer.closeDrawer(GravityCompat.START);} 别的 {super.onBackPressed();}}@覆盖公共布尔 onCreateOptionsMenu(菜单菜单){//给菜单充气;如果它存在,这会将项目添加到操作栏.getMenuInflater().inflate(R.menu.main, menu);返回真;}@覆盖公共布尔 onOptionsItemSelected(MenuItem item) {//在此处处理操作栏项目的点击.操作栏将//自动处理点击 Home/Up 按钮,这么久//当您在 AndroidManifest.xml 中指定父活动时.int id = item.getItemId();//不检查SimplifiableIfStatement如果(id == R.id.action_settings){返回真;}返回 super.onOptionsItemSelected(item);}@SuppressWarnings("StatementWithEmptyBody")@覆盖public boolean onNavigationItemSelected(MenuItem item) {//在此处处理导航视图项的点击.int id = item.getItemId();如果(id == R.id.nav_pet_about){} else if (id == R.id.nav_pet_info) {} else if (id == R.id.nav_pet_checklist) {} else if (id == R.id.nav_info) {AboutFragment aboutFragment = new AboutFragment();FragmentTransaction manager = getSupportFragmentManager().beginTransaction();manager.replace(R.id.relativeLayout_for_About, aboutFragment);manager.addToBackStack(null);manager.commit();}DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);drawer.closeDrawer(GravityCompat.START);返回真;}}

这是我的fragment_about.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"工具:上下文=de.christian_heinisch.tiercheckliste.AboutFragment"android:id="@+id/relativeLayout_for_About"><!-- TODO: 更新空白片段布局--><文本视图android:layout_width="match_parent"android:layout_height="match_parent"android:text="@string/hello_blank_fragment"/></RelativeLayout>

这是我的 AboutFragment.java

package de.christian_heinisch.tiercheckliste;导入 android.os.Bundle;导入 android.support.v4.app.Fragment;导入 android.view.LayoutInflater;导入 android.view.View;导入 android.view.ViewGroup;/*** 一个简单的 {@link Fragment} 子类.*/公共类 AboutFragment 扩展 Fragment {公共 AboutFragment() {//必需的空公共构造函数}@覆盖公共视图 onCreateView(LayoutInflater inflater, ViewGroup 容器,捆绑savedInstanceState) {//膨胀这个片段的布局返回 inflater.inflate(R.layout.fragment_about, container, false);}}

有人知道出了什么问题吗?

解决方案

FragmentTransactionActivity 层次结构中的 View 替换为 <代码>片段.ID 为 R.id.relativeLayout_for_AboutView 位于您用于 Fragment 的布局中,而不是 的布局活动.在您的 R.layout.activity_main 中添加一个 View,您希望 AboutFragment 出现在此处:

然后将此 View 替换为您的 AboutFragment:

Fragment fragment = new AboutFragment();getSupportFragmentManager().beginTransaction().replace(R.id.placeholder_about, fragment).addToBackStack(null).commit();

您可以在开发人员培训文档.

I tried to start a App project and now i get the following error.

I tried a lot from the answers that i found here on the side, but I don't found my mistake.

Here is the output:

E/AndroidRuntime: FATAL EXCEPTION: main
                  Process: de.christian_heinisch.tiercheckliste, PID: 28372
                  java.lang.IllegalArgumentException: No view found for id 0x7f0c007b (de.christian_heinisch.tiercheckliste:id/relativeLayout_for_About) for fragment AboutFragment{5abcffb #0 id=0x7f0c007b}
                      at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1102)
                      at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1290)
                      at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:801)
                      at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1677)
                      at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:536)
                      at android.os.Handler.handleCallback(Handler.java:739)
                      at android.os.Handler.dispatchMessage(Handler.java:95)
                      at android.os.Looper.loop(Looper.java:148)
                      at android.app.ActivityThread.main(ActivityThread.java:5466)
                      at java.lang.reflect.Method.invoke(Native Method)
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
I/Process: Sending signal. PID: 28372 SIG: 9
Application terminated.

Here is my MainActivity

package de.christian_heinisch.tiercheckliste;

import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.view.View;
import android.support.design.widget.NavigationView;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity
        implements NavigationView.OnNavigationItemSelectedListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                        .setAction("Action", null).show();
            }
        });

        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
                this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
        drawer.addDrawerListener(toggle);
        toggle.syncState();

        NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
        navigationView.setNavigationItemSelectedListener(this);
    }

    @Override
    public void onBackPressed() {
        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        if (drawer.isDrawerOpen(GravityCompat.START)) {
            drawer.closeDrawer(GravityCompat.START);
        } else {
            super.onBackPressed();
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }

    @SuppressWarnings("StatementWithEmptyBody")
    @Override
    public boolean onNavigationItemSelected(MenuItem item) {
        // Handle navigation view item clicks here.
        int id = item.getItemId();

        if (id == R.id.nav_pet_about) {

        } else if (id == R.id.nav_pet_info) {

        } else if (id == R.id.nav_pet_checklist) {

        } else if (id == R.id.nav_info) {

            AboutFragment aboutFragment = new AboutFragment();
            FragmentTransaction manager = getSupportFragmentManager().beginTransaction();
            manager.replace(R.id.relativeLayout_for_About, aboutFragment);
            manager.addToBackStack(null);
            manager.commit();

        }

        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        drawer.closeDrawer(GravityCompat.START);
        return true;
    }
}

Here is my fragment_about.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="de.christian_heinisch.tiercheckliste.AboutFragment"
    android:id="@+id/relativeLayout_for_About">

    <!-- TODO: Update blank fragment layout -->
    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:text="@string/hello_blank_fragment" />

</RelativeLayout>

And here is my AboutFragment.java

package de.christian_heinisch.tiercheckliste;


import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;


/**
 * A simple {@link Fragment} subclass.
 */
public class AboutFragment extends Fragment {


    public AboutFragment() {
        // Required empty public constructor
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.fragment_about, container, false);
    }

}

Does anyone have an idea what is wrong?

解决方案

A FragmentTransaction replaces a View within your Activity hierarchy with your Fragment. The View with the ID R.id.relativeLayout_for_About is in the layout your are using for your Fragment, not the layout of the Activity. Add a View in your R.layout.activity_main where you want your AboutFragment to appear:

<FrameLayout android:id="@+id/placeholder_about"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"/>

Then replace this View with your AboutFragment:

Fragment fragment = new AboutFragment();

getSupportFragmentManager().beginTransaction()
        .replace(R.id.placeholder_about, fragment).addToBackStack(null).commit();

You can read more about this paradigm in the Developer Training docs.

这篇关于java.lang.IllegalArgumentException: 没有找到 id 0x7f0c007b 的视图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆