2

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

我想知道您是否帮我弄清楚我正在编写的代码中有什么问题。

这是我的 MainActivity.java 文件:

公共类 MainActivity 扩展 Activity {

    私人按钮 mVideoButton;
    片断片断;

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

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

        // 视频按钮
        mVideoButton.setOnClickListener(new View.OnClickListener() {

            @覆盖
            公共无效 onClick(查看 v){

                片段管理器 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;
    }   
}

最后,fragment_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

4

2 回答 2

3

关于ft.add()int 参数是指要添加的容器Fragment;您正在尝试将 the 添加FragmentFragment自己的布局中(Android 没有找到,View因为它还没有充气,如果它这样做了,它会抛出,Exception在这种情况下;您不能将 a 添加Fragment到它自己的布局中)。您想要替换R.id.fragmentVideoR.id.activityStart添加Fragment到当前TableLayout是已经膨胀的main_activity布局的一部分

于 2013-09-22T04:20:42.957 回答
0

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

于 2013-09-22T04:12:14.070 回答