未找到ID查看......对于片段PlaceholderFragment [英] No view found for id ... for fragment PlaceholderFragment

查看:202
本文介绍了未找到ID查看......对于片段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:机器人=htt​​p://schemas.android.com/apk/res/android
的xmlns:工具=htt​​p://schemas.android.com/tool​​s
机器人:ID =@ + ID /容器
机器人:layout_width =match_parent
机器人:layout_height =match_parent
工具:上下文=com.example.testapp.MainActivity
工具:忽略=MergeRootFrame/>

fragment_main.xml

 < LinearLayout中的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
的xmlns:工具=htt​​p://schemas.android.com/tool​​s
机器人: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:机器人=htt​​p://schemas.android.com/apk/res/android
的xmlns:工具=htt​​p://schemas.android.com/tool​​s
机器人:ID =@ + ID /容器
机器人:layout_width =match_parent
机器人:layout_height =match_parent
工具:上下文=com.example.testapp.DisplayMessageActivity
工具:忽略=MergeRootFrame/>

fragment_display_message.xml

 <的RelativeLayout的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
的xmlns:工具=htt​​p://schemas.android.com/tool​​s
机器人:layout_width =match_parent
机器人:layout_height =match_parent>< / RelativeLayout的>

的Andr​​oidManifest.xml

 <?XML版本=1.0编码=UTF-8&GT?;
<清单的xmlns:机器人=htt​​p://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); in DisplayMessageActivity. If your trying to display only the message you pass through the intent , then your can directly set the Textview as content to detail activity. Change the DetailMessageActivity 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屋!

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