找不到ID 0x7f090005的视图

时间:2013-09-22 04:06:31

标签: java android fragment

我开始构建一个简单的Android应用程序,所以当我按下我的视频按钮时,它会调用一个包含视频播放器的片段,但我总是得到:找不到id为0x7f090005的视图......

我想知道您是否通过弄清楚我正在撰写的代码中的错误来帮助我。

这是我的MainActivity.java文件:

public class MainActivity extends Activity {

    private Button mVideoButton;
    Fragment fragment;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_activity); 

        mVideoButton = (Button)findViewById(R.id.videoButton);

        // Video Button
        mVideoButton.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {

                FragmentManager fm = getFragmentManager();
                FragmentTransaction ft = fm.beginTransaction();
                FragmentVideo sf = new FragmentVideo();

                ft.add(R.id.fragmentVideo, sf);
                ft.commit();
            }
        });
    }
}

然后我有了main_activity.xml:

<?xml version="1.0" encoding="utf-8"?>

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/activityStart" >

    <ImageView 
        android:src="@drawable/armstrong_on_moon"
        android:contentDescription="@string/description"
        android:layout_width="match_parent"
        android:layout_height="match_parent" 
        android:scaleType="centerInside"
        android:layout_weight="1" />

    <TableRow 
        android:gravity="center|bottom"
        android:layout_weight="0">

        <Button 
            android:id="@+id/videoButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/video" />

    </TableRow>

接下来,我的FragmentVideo.java类:

public class FragmentVideo extends Fragment{

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState ){
        View v = inflater.inflate(R.layout.fragment_video, parent, false);

        return v;
    }   
}

最后,片段_video.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:id="@+id/fragmentVideo" >

        <VideoView
            android:id="@+id/video"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_gravity="center" />

        <ProgressBar
            android:id="@+id/prog"
            android:layout_width="70dp"
            android:layout_height="70dp"
            android:layout_gravity="center" />

</LinearLayout>

如果我做错了或者我错过了什么,请告诉我,因为我可以看到问题所在。

非常感谢您提前提供任何帮助。

EGMWEB

2 个答案:

答案 0 :(得分:3)

ft.add()上,int参数指向要添加Fragment的容器;您正尝试将Fragment添加到Fragment自己的布局(Android找不到View,因为它还没有膨胀,如果确实如此,它会抛出Exception 1}}在这种情况下;您不能将Fragment添加到其自己的布局中。您希望将R.id.fragmentVideo替换为R.id.activityStart,以将Fragment添加到已经夸大的TableLayout布局

中的当前main_activity

答案 1 :(得分:0)

你能查看一下R.java文件中id为'0x7f090005'的等效视图吗?它应该在您项目的gen文件夹下。框架无法在此java类的资源文件中找到它。