未找到ID查看......对于片段PlaceholderFragment [英] No view found for id ... for fragment PlaceholderFragment
问题描述
我有一个简单的应用程序(基于 Android的第一个应用程序示例);它的唯一的事情就是分别用的EditText和一个按钮。按钮创建另一个活动,并显示的EditText消息......简单! ......但在模拟器上运行时,应用程序关闭,当我点击按钮,我得到这个错误:
未找到ID 0x7f05003c视图(com.example.testapp:ID /容器)的片段PlaceholderFragment {4173ead8#0 ID = 0x7f05003c}
块引用>MainActivity.java
公共类MainActivity扩展ActionBarActivity {公共最后静态字符串EXTRA_MESSAGE =com.example.testapp.MESSAGE;公共无效的SendMessage(查看视图){
意向意图=新意图(这一点,DisplayMessageActivity.class);
EDITTEXT的EditText =(EditText上)findViewById(R.id.edt_message);
字符串消息= editText.getText()的toString()。
intent.putExtra(EXTRA_MESSAGE,消息);
startActivity(意向);
}@覆盖
保护无效的onCreate(捆绑savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.activity_main); 如果(savedInstanceState == NULL){
getSupportFragmentManager()调用BeginTransaction()
。新增(R.id.container,新PlaceholderFragment())
。承诺();
}
}
@覆盖
公共布尔onCreateOptionsMenu(菜单菜单){ //充气菜单;如果是present这增加了项目操作栏。
。getMenuInflater()膨胀(R.menu.main,菜单);
返回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_main,集装箱,FALSE);
返回rootView;
}
}
}activity_layout.xml
<的FrameLayout的xmlns:机器人=http://schemas.android.com/apk/res/android
的xmlns:工具=http://schemas.android.com/tools
机器人:ID =@ + ID /容器
机器人:layout_width =match_parent
机器人:layout_height =match_parent
工具:上下文=com.example.testapp.MainActivity
工具:忽略=MergeRootFrame/>fragment_main.xml
< LinearLayout中的xmlns:机器人=http://schemas.android.com/apk/res/android
的xmlns:工具=http://schemas.android.com/tools
机器人:layout_width =match_parent
机器人:layout_height =match_parent
机器人:方向=横向><的EditText
机器人:ID =@ + ID / edt_message
机器人:layout_weight =1
机器人:layout_width =0dp
机器人:layout_height =WRAP_CONTENT
机器人:提示=@字符串/消息/><按钮
机器人:layout_width =WRAP_CONTENT
机器人:layout_height =WRAP_CONTENT
机器人:文字=@字符串/ textButtom
安卓的onClick =SendMessage函数/>
< / LinearLayout中>DisplayMessageActivity.java
公共类DisplayMessageActivity扩展ActionBarActivity {@覆盖
保护无效的onCreate(捆绑savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.activity_display_message); 如果(savedInstanceState == NULL){
getSupportFragmentManager()调用BeginTransaction()
。新增(R.id.container,新PlaceholderFragment())提交()。
} 意向意图= getIntent();
字符串消息= intent.getStringExtra(MainActivity.EXTRA_MESSAGE); TextView中的TextView =新的TextView(本);
textView.setTextSize(40);
textView.setText(消息); 的setContentView(TextView的);
}@覆盖
公共布尔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_display_message,
集装箱,FALSE);
返回rootView;
}
}}activity_display_message.xml
<的FrameLayout的xmlns:机器人=http://schemas.android.com/apk/res/android
的xmlns:工具=http://schemas.android.com/tools
机器人:ID =@ + ID /容器
机器人:layout_width =match_parent
机器人:layout_height =match_parent
工具:上下文=com.example.testapp.DisplayMessageActivity
工具:忽略=MergeRootFrame/>fragment_display_message.xml
<的RelativeLayout的xmlns:机器人=http://schemas.android.com/apk/res/android
的xmlns:工具=http://schemas.android.com/tools
机器人:layout_width =match_parent
机器人:layout_height =match_parent>< / RelativeLayout的>的AndroidManifest.xml
<?XML版本=1.0编码=UTF-8&GT?;
<清单的xmlns:机器人=http://schemas.android.com/apk/res/android
包=com.example.testapp
安卓版code =1
机器人:=的versionName1.0><用途-SDK
安卓的minSdkVersion =10
机器人:targetSdkVersion =18/><应用
机器人:allowBackup =真
机器人:图标=@绘制/ ic_launcher
机器人:标签=@字符串/ APP_NAME
机器人:主题=@风格/ AppTheme>
<活动
机器人:名字=com.example.testapp.MainActivity
机器人:标签=@字符串/ APP_NAME>
&所述;意图滤光器>
<作用机器人:名字=android.intent.action.MAIN/> <类机器人:名字=android.intent.category.LAUNCHER/>
&所述; /意图滤光器>
< /活性GT;
<活动
机器人:名字=com.example.testapp.DisplayMessageActivity
机器人:标签=@字符串/ title_activity_display_message
机器人:parentActivityName =com.example.testapp.MainActivity>
&所述;元数据
机器人:名字=android.support.PARENT_ACTIVITY
机器人:值=com.example.testapp.MainActivity/>
< /活性GT;
< /用途>< /清单>LogCat中
> 03-22 11:02:42.755:E / AndroidRuntime(1722):致命异常:主要03-22
> 11:02:42.755:E / AndroidRuntime(1722):了java.lang.RuntimeException:
>无法启动活动ComponentInfo {com.example.testapp /
> com.example.testapp.DisplayMessageActivity}:java.lang.IllegalArgumentException异常:
>鉴于没有发现ID 0x7f05003c(com.example.testapp:ID /箱)为
>片段PlaceholderFragment {417356c8#0 ID = 0x7f05003c} 03-22
> 11:02:42.755:E / AndroidRuntime(1722):在
> android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)
> 11月3日至22日:02:42.755:E / AndroidRuntime(1722):在
> android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
> 11月3日至22日:02:42.755:E / AndroidRuntime(1722):在
> android.app.ActivityThread.access $ 600(ActivityThread.java:141)03-22
> 11:02:42.755:E / AndroidRuntime(1722):在
> android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1256)
> 11月3日至22日:02:42.755:E / AndroidRuntime(1722):在
> android.os.Handler.dispatchMessage(Handler.java:99)03-22
> 11:02:42.755:E / AndroidRuntime(1722):在
> android.os.Looper.loop(Looper.java:137)11月3日至22日:02:42.755:
> E / AndroidRuntime(1722):在
> android.app.ActivityThread.main(ActivityThread.java:5103)03-22
> 11:02:42.755:E / AndroidRuntime(1722):在
> java.lang.reflect.Method.invokeNative(本机方法)03-22
> 11:02:42.755:E / AndroidRuntime(1722):在
> java.lang.reflect.Method.invoke(Method.java:525)11月3日至22日:02:42.755:
> E / AndroidRuntime(1722):在
> com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:737)
> 11月3日至22日:02:42.755:E / AndroidRuntime(1722):在
> com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)03-22
> 11:02:42.755:E / AndroidRuntime(1722):在
> dalvik.system.NativeStart.main(本机方法)11月3日至22日:02:42.755:
> E / AndroidRuntime(1722):java.lang.IllegalArgumentException异常:产生的原因:
>鉴于没有发现ID 0x7f05003c(com.example.testapp:ID /箱)为
>片段PlaceholderFragment {417356c8#0 ID = 0x7f05003c} 03-22
> 11:02:42.755:E / AndroidRuntime(1722):在
> android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:919)
> 11月3日至22日:02:42.755:E / AndroidRuntime(1722):在
> android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104)
> 11月3日至22日:02:42.755:E / AndroidRuntime(1722):在
> android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
> 11月3日至22日:02:42.755:E / AndroidRuntime(1722):在
> android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1467)
> 11月3日至22日:02:42.755:E / AndroidRuntime(1722):在
> android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:570)
> 11月3日至22日:02:42.755:E / AndroidRuntime(1722):在
> android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1171)
> 11月3日至22日:02:42.755:E / AndroidRuntime(1722):在
> android.app.Activity.performStart(Activity.java:5143)03-22
> 11:02:42.755:E / AndroidRuntime(1722):在
> android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2184)
> 03-22 11:02:42.755:E / AndroidRuntime(1722):11 ...更多03-22
> 11:02:42.965:D / dalvikvm(1722):GC_FOR_ALLOC释放206K,9%免费
> 2808K / 3076K,暂停54ms,总92ms 11月3日至22日:02:44.764:
> I /过程(1722):发送信号。 PID:1722 SIG:9
解决方案崩溃是由于
的setContentView
(TextView的);在DisplayMessageActivity
。如果您想只显示消息
你经过的意图,那么你可以直接设置的TextView
的内容详细的活动。更改DetailMessageActivity
的onCreate
如下code ...@覆盖
保护无效的onCreate(捆绑savedInstanceState){
super.onCreate(savedInstanceState); 意向意图= getIntent();
字符串消息= intent.getStringExtra(MainActivity.EXTRA_MESSAGE); TextView中的TextView =新的TextView(本);
textView.setTextSize(40);
textView.setText(消息); 的setContentView(TextView的);
}也多了一个问题,改变MainActivity的setContentView(R.layout.activity_layout);
I have a simple app (based on the Android First App sample); the only thing it does is show one EditText and a button. The button creates another activity, and show the EditText message ... simple! ... But when running on the emulator, the app closes when I click on the button and i get this error:
"No view found for id 0x7f05003c (com.example.testapp:id/container) for fragment PlaceholderFragment{4173ead8 #0 id=0x7f05003c}"
MainActivity.java
public class MainActivity extends ActionBarActivity { public final static String EXTRA_MESSAGE = "com.example.testapp.MESSAGE"; public void SendMessage (View view) { Intent intent = new Intent(this, DisplayMessageActivity.class); EditText editText = (EditText) findViewById(R.id.edt_message); String message = editText.getText().toString(); intent.putExtra(EXTRA_MESSAGE, message); startActivity(intent); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); if (savedInstanceState == null) { getSupportFragmentManager().beginTransaction() .add(R.id.container, new PlaceholderFragment()) .commit(); } } @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(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } /** * A placeholder fragment containing a simple view. */ 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_main, container, false); return rootView; } } }
activity_layout.xml
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/container" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.testapp.MainActivity" tools:ignore="MergeRootFrame" />
fragment_main.xml
<LinearLayout 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:orientation="horizontal" > <EditText android:id="@+id/edt_message" android:layout_weight="1" android:layout_width="0dp" android:layout_height="wrap_content" android:hint="@string/Message" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/textButtom" android:onClick="SendMessage" /> </LinearLayout>
DisplayMessageActivity.java
public class DisplayMessageActivity extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_display_message); if (savedInstanceState == null) { getSupportFragmentManager().beginTransaction() .add(R.id.container, new PlaceholderFragment()).commit(); } Intent intent = getIntent(); String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE); TextView textView = new TextView(this); textView.setTextSize (40); textView.setText (message); setContentView (textView); } @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); } /** * A placeholder fragment containing a simple view. */ 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_display_message, container, false); return rootView; } } }
activity_display_message.xml
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/container" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.testapp.DisplayMessageActivity" tools:ignore="MergeRootFrame" />
fragment_display_message.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" > </RelativeLayout>
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.testapp" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="10" android:targetSdkVersion="18" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.example.testapp.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="com.example.testapp.DisplayMessageActivity" android:label="@string/title_activity_display_message" android:parentActivityName="com.example.testapp.MainActivity" > <meta-data android:name="android.support.PARENT_ACTIVITY" android:value="com.example.testapp.MainActivity" /> </activity> </application> </manifest>
LogCat
> 03-22 11:02:42.755: E/AndroidRuntime(1722):FATAL EXCEPTION: main 03-22 > 11:02:42.755: E/AndroidRuntime(1722):java.lang.RuntimeException: > Unable to start activity ComponentInfo{com.example.testapp/ > com.example.testapp.DisplayMessageActivity}:java.lang.IllegalArgumentException: > No view found for id 0x7f05003c (com.example.testapp:id/container) for > fragment PlaceholderFragment{417356c8 #0 id=0x7f05003c} 03-22 > 11:02:42.755: E/AndroidRuntime(1722):at > android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211) > 03-22 11:02:42.755: E/AndroidRuntime(1722):at > android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261) > 03-22 11:02:42.755: E/AndroidRuntime(1722):at > android.app.ActivityThread.access$600(ActivityThread.java:141) 03-22 > 11:02:42.755: E/AndroidRuntime(1722):at > android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256) > 03-22 11:02:42.755: E/AndroidRuntime(1722):at > android.os.Handler.dispatchMessage(Handler.java:99) 03-22 > 11:02:42.755: E/AndroidRuntime(1722):at > android.os.Looper.loop(Looper.java:137) 03-22 11:02:42.755: > E/AndroidRuntime(1722):at > android.app.ActivityThread.main(ActivityThread.java:5103) 03-22 > 11:02:42.755: E/AndroidRuntime(1722):at > java.lang.reflect.Method.invokeNative(Native Method) 03-22 > 11:02:42.755: E/AndroidRuntime(1722):at > java.lang.reflect.Method.invoke(Method.java:525) 03-22 11:02:42.755: > E/AndroidRuntime(1722):at > com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) > 03-22 11:02:42.755: E/AndroidRuntime(1722):at > com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 03-22 > 11:02:42.755: E/AndroidRuntime(1722):at > dalvik.system.NativeStart.main(Native Method) 03-22 11:02:42.755: > E/AndroidRuntime(1722):Caused by: java.lang.IllegalArgumentException: > No view found for id 0x7f05003c (com.example.testapp:id/container) for > fragment PlaceholderFragment{417356c8 #0 id=0x7f05003c} 03-22 > 11:02:42.755: E/AndroidRuntime(1722):at > android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:919) > 03-22 11:02:42.755: E/AndroidRuntime(1722):at > android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104) > 03-22 11:02:42.755: E/AndroidRuntime(1722):at > android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682) > 03-22 11:02:42.755: E/AndroidRuntime(1722):at > android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1467) > 03-22 11:02:42.755: E/AndroidRuntime(1722):at > android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:570) > 03-22 11:02:42.755: E/AndroidRuntime(1722):at > android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1171) > 03-22 11:02:42.755: E/AndroidRuntime(1722):at > android.app.Activity.performStart(Activity.java:5143) 03-22 > 11:02:42.755: E/AndroidRuntime(1722):at > android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2184) > 03-22 11:02:42.755: E/AndroidRuntime(1722):... 11 more 03-22 > 11:02:42.965: D/dalvikvm(1722): GC_FOR_ALLOC freed 206K, 9% free > 2808K/3076K, paused 54ms, total 92ms 03-22 11:02:44.764: > I/Process(1722): Sending signal. PID: 1722 SIG: 9
解决方案Crash is due to
setContentView
(textView); inDisplayMessageActivity
. If your tryingto display only the message
you pass through the intent , then your can directly set theTextview
as content to detail activity. Change theDetailMessageActivity
onCreate
as below code...@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Intent intent = getIntent(); String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE); TextView textView = new TextView(this); textView.setTextSize (40); textView.setText (message); setContentView (textView); }
Also one more issue , change the 'MainActivity' setContentView(R.layout.activity_layout);
这篇关于未找到ID查看......对于片段PlaceholderFragment的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!