如何正确的在fragment中显示surfaceview呢?

肉鸽 2015-09-03 06:11:51
先说说遇到的问题:fragment中的view如果是个surfaceview,则第一次不显示该view

再说说程序结构
1、Activity工作在Tab模式中,其下有2个Tab:Tab_P1、TAB_P1
2、Tab_P1绑定fragment_P1
3、Tab_P2绑定fragment_P2

MinaActivity.java代码如下:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

ActionBar actionBar = getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
Tab_P1 = actionBar.newTab();
Tab_P1.setCustomView(R.layout.tab_layout_dong);
Tab_P2 = actionBar.newTab();
Tab_P2.setCustomView(R.layout.tab_layout_nan);

fragment_P1 = new Fragment_P1();
MyTabListener AListener=new MyTabListener(fragment_P1);
Tab_P1.setTabListener(AListener);

fragment_P2 = new Fragment_P2();
MyTabListener BListener=new MyTabListener(fragment_P2);
Tab_P2.setTabListener(BListener);

actionBar.addTab(Tab_P1);
actionBar.addTab(Tab_P2);

FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction transaction = fragmentManager.beginTransaction();
transaction.replace(R.id.fragment_place, fragment_P1);
transaction.commit();
}


activity_main.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"
tools:context="${relativePackage}.${activityClass}" >

<FrameLayout
android:id="@+id/fragment_place"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</FrameLayout>
</RelativeLayout>


Fragment_P1.java核心代码如下:
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View view = inflater.inflate(R.layout.fragment_layout_dong, container, false); //①<--这样可以正常
//View view = new MySurfaceView(this.getActivity()); //②这样就显示不出来
return view;
}


fragment_layout_dong.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" >

<TextView
android:id="@+id/fragment_dong_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|center"
android:text="test"
/>
</LinearLayout>


MySurfaceView.java代码有点长,就是在其中随便画几条线,贴一部分上来:
public MySurfaceView(Context aContext)
{
super(aContext);
context=aContext;
holder = this.getHolder();
holder.addCallback(this);
}

public void surfaceCreated(SurfaceHolder holder) {
myThread = new Thread(new MyRunnable());
runFlag = true;
myThread.start();
}

class MyRunnable implements Runnable {
@Override
public void run()
{
//这里随便画几条线段测试
}


换成②处的代码,程序启动后,没有任何显示,来回切换Tab后,可以正常显示。
求大神指导,使用②代码时,怎么在启动程序时,可以正常显示,万分感谢~
...全文
625 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
面向窗外 2017-07-28
  • 打赏
  • 举报
回复
我也遇到了,请问现在问题解决了吗,谢谢。
fangshy 2017-04-08
  • 打赏
  • 举报
回复
请问问题解决了么,我也遇到了,说下思路呢 谢谢

80,349

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧