我开始构建一个简单的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
答案 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类的资源文件中找到它。