未找到ID 0x7f070053视图 [英] No view found for id 0x7f070053
问题描述
在测试中的Android工作室SOM的东西,跑了这个错误:
致命异常:主要
工艺:com.meisolsson.app,PID:25610
了java.lang.RuntimeException:无法启动活动ComponentInfo {} com.meisolsson.app/com.meisolsson.app.LoginActivity:java.lang.IllegalArgumentException异常:未找到ID 0x7f070053视图(com.meisolsson.app:id/container)对于片段PlaceholderFragment {4284e750#0 ID = 0x7f070053}
块引用>下面是我的LoginActivity.java
包com.meisolsson.app;进口android.support.v7.app.ActionBarActivity;
进口android.support.v7.app.ActionBar;
进口android.support.v4.app.Fragment;
进口android.os.Bundle;
进口android.view.LayoutInflater;
进口android.view.Menu;
进口android.view.MenuItem;
进口android.view.View;
进口android.view.ViewGroup;
进口android.os.Build;
进口android.view.Window;
进口android.widget.Button;公共类LoginActivity扩展ActionBarActivity {私人按钮loginButton;@覆盖
保护无效的onCreate(捆绑savedInstanceState){
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState);
的setContentView(R.layout.fragment_login); 如果(savedInstanceState == NULL){
getSupportFragmentManager()调用BeginTransaction()
。新增(R.id.container,新PlaceholderFragment())
。承诺();
}
this.setContentView(R.layout.fragment_login);
this.loginButton =(按钮)this.findViewById(R.id.button);
this.loginButton.setOnClickListener(新View.OnClickListener(){
@覆盖
公共无效的onClick(视图v){
完();
}
});
}
@覆盖
公共布尔onCreateOptionsMenu(菜单菜单){ //充气菜单;如果是present这增加了项目操作栏。
。getMenuInflater()膨胀(R.menu.login,菜单);
返回true;
}@覆盖
公共布尔onOptionsItemSelected(菜单项项){
//处理动作栏项目点击这里。操作栏会
//自动处理上点击主页/向上按钮,只要
//你在AndroidManifest.xml中指定一个父活动。
INT ID = item.getItemId();
如果(ID == R.id.action_settings){
返回true;
}
返回super.onOptionsItemSelected(项目);
}公共静态类PlaceholderFragment扩展片段{ 公共PlaceholderFragment(){
} @覆盖
公共查看onCreateView(LayoutInflater充气器,容器的ViewGroup,
捆绑savedInstanceState){
查看rootView = inflater.inflate(R.layout.fragment_login,集装箱,FALSE);
返回rootView; }
}
}和我fragment_login.xml
<的RelativeLayout的xmlns:机器人=http://schemas.android.com/apk/res/android
的xmlns:工具=http://schemas.android.com/tools
机器人:layout_width =match_parent
机器人:layout_height =match_parent
机器人:paddingLeft =@扪/ activity_horizontal_margin
机器人:paddingRight =@扪/ activity_horizontal_margin
机器人:paddingTop =@扪/ activity_vertical_margin
机器人:paddingBottom会=@扪/ activity_vertical_margin
工具:上下文=。LoginActivity $ PlaceholderFragment
机器人:可聚焦=真
机器人:背景=#fcff00>
<的EditText
机器人:layout_width =WRAP_CONTENT
机器人:layout_height =WRAP_CONTENT
机器人:ID =@ + ID / EDITTEXT
机器人:提示=@字符串/用户
机器人:填充=10dp
机器人:背景=#FFFFFF
机器人:layout_above =@ + ID / editText2
机器人:layout_alignLeft =@ + ID / editText2
机器人:layout_alignRight =@ + ID / editText2/><的EditText
机器人:layout_width =WRAP_CONTENT
机器人:layout_height =WRAP_CONTENT
安卓的inputType =textPassword
机器人:EMS =10
机器人:ID =@ + ID / editText2
机器人:layout_centerVertical =真
机器人:layout_centerHorizontal =真
机器人:提示=@字符串/通
机器人:背景=#FFFFFF
机器人:填充=10dp/>
<按钮
机器人:layout_width =WRAP_CONTENT
机器人:layout_height =WRAP_CONTENT
机器人:文字=@字符串/登录
机器人:ID =@ + ID /按钮
风格=@风格/ AppTheme
机器人:背景=#ff5900
安卓则shadowColor =#000000
机器人:layout_below =@ + ID / editText2
机器人:layout_alignLeft =@ + ID / EDITTEXT
机器人:layout_alignRight =@ + ID / editText2
机器人:可点击=真/>< / RelativeLayout的>
解决方案问题是你这样做的方式。对于
活动
,您没有设置片段
的看法,您设置独立我>认为,有一个点要放片段
。这取决于你如何做你的PlaceHolderFragment
,下面应该得到一个工作程序。首先添加此文件:
activity_main.xml中
<的FrameLayout
机器人:ID =@ + ID /容器
机器人:layout_width =match_parent
机器人:layout_height =match_parent/>然后在你的
活动改变这个东西
:LoginActivity.java
/ *同样的东西* /@覆盖
保护无效的onCreate(捆绑savedInstanceState){
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState); //这是对这里的重要的变化!
的setContentView(R.layout.activity_main); 如果(savedInstanceState == NULL){
getSupportFragmentManager()调用BeginTransaction()
。新增(R.id.container,新PlaceholderFragment())
。承诺();
} //你已处理按钮的东西应该在你的
// PlaceHolderFragment类的onCreateView()方法
}我希望这有助于。祝你好运!
was testing som things in Android Studios and ran in to this error:
FATAL EXCEPTION: main Process: com.meisolsson.app, PID: 25610 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.meisolsson.app/com.meisolsson.app.LoginActivity}: java.lang.IllegalArgumentException: No view found for id 0x7f070053 (com.meisolsson.app:id/container) for fragment PlaceholderFragment{4284e750 #0 id=0x7f070053}
Here is my LoginActivity.java
package com.meisolsson.app; import android.support.v7.app.ActionBarActivity; import android.support.v7.app.ActionBar; import android.support.v4.app.Fragment; import android.os.Bundle; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.os.Build; import android.view.Window; import android.widget.Button; public class LoginActivity extends ActionBarActivity { private Button loginButton; @Override protected void onCreate(Bundle savedInstanceState) { this.requestWindowFeature(Window.FEATURE_NO_TITLE); super.onCreate(savedInstanceState); setContentView(R.layout.fragment_login); if (savedInstanceState == null) { getSupportFragmentManager().beginTransaction() .add(R.id.container, new PlaceholderFragment()) .commit(); } this.setContentView(R.layout.fragment_login); this.loginButton = (Button)this.findViewById(R.id.button); this.loginButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { finish(); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.login, 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(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } public static class PlaceholderFragment extends Fragment { public PlaceholderFragment() { } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.fragment_login, container, false); return rootView; } } }
And my fragment_login.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" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".LoginActivity$PlaceholderFragment" android:focusable="true" android:background="#fcff00"> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/editText" android:hint="@string/user" android:padding="10dp" android:background="#ffffff" android:layout_above="@+id/editText2" android:layout_alignLeft="@+id/editText2" android:layout_alignRight="@+id/editText2" /> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:inputType="textPassword" android:ems="10" android:id="@+id/editText2" android:layout_centerVertical="true" android:layout_centerHorizontal="true" android:hint="@string/pass" android:background="#ffffff" android:padding="10dp" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/login" android:id="@+id/button" style="@style/AppTheme" android:background="#ff5900" android:shadowColor="#000000" android:layout_below="@+id/editText2" android:layout_alignLeft="@+id/editText" android:layout_alignRight="@+id/editText2" android:clickable="true"/> </RelativeLayout>
解决方案The problem is the way you're doing this. For the
Activity
, you don't set theFragment
's view, you set a separate view that has a spot to put aFragment
. Depending on how you did yourPlaceHolderFragment
, the following ought to get a working app.First add this file:
activity_main.xml
<FrameLayout android:id="@+id/container" android:layout_width="match_parent" android:layout_height="match_parent"/>
Then change this stuff in your
Activity
:LoginActivity.java
/* Same stuff*/ @Override protected void onCreate(Bundle savedInstanceState) { this.requestWindowFeature(Window.FEATURE_NO_TITLE); super.onCreate(savedInstanceState); //This is the important change right here! setContentView(R.layout.activity_main); if (savedInstanceState == null) { getSupportFragmentManager().beginTransaction() .add(R.id.container, new PlaceholderFragment()) .commit(); } //The stuff that you had handling buttons should go in your //PlaceHolderFragment class's onCreateView() method }I hope this helps. Good Luck!
这篇关于未找到ID 0x7f070053视图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!