java.lang.IllegalArgumentException: 没有找到 id 0x7f0c007b 的视图 [英] java.lang.IllegalArgumentException: No view found for 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);}}
有人知道出了什么问题吗?
FragmentTransaction
将 Activity
层次结构中的 View
替换为 <代码>片段代码>.ID 为 R.id.relativeLayout_for_About
的 View
位于您用于 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屋!