2011-02-07 116 views
0

MainActivity.java:从自定义布局创建xml布局。可能吗?

public class MainActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     this.setTitle(R.string.app_name); 
     setContentView(new SampleView(this)); 
    } 
} 

SampleView.java:

public class SampleView extends View { 

    @Override 
    protected void onDraw(Canvas canvas) { 
     if (certaincondition = true) { 
      //add elements to canvas etc 
     } else { 
      //How do I do the below? The layout is defined in xml. 
      //I do not want to use Intent. Please help me 

      //create a layout from resource R.layout.idAbout and transfer control. 
     } 
    } 
} 

回答

0

使用吹气布局:

View newRootViewElement; 
LayoutInflater li = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
newRootViewElement= li.inflate(R.layout.idAbout, null); 
0

可以膨胀的布局使用

View.inflate(getContext(), R.layout.idAbout, viewParent); 

其中viewParent是一个ViewParent,它将是充气视图的父级(可以是null)。

但是你想要做什么?从onDraw()开始新的活动或修改视图层次结构有点奇怪。您可能想要将可运行的帖子发布到Handler,它将在事件循环的下一个循环中执行您想要的操作。要开始一项新活动(例如显示“关于该应用的”信息),您应该查看Intent课程。

+0

实际问题在这里描述http://stackoverflow.com/questions/4926478/why-does-the-menu-button-in-the-emulator-show-all-the-activities-of-my-app 。因为我无法修复它:作为解决方法,我正在尝试为所有视图使用相同的活动。 – hsbgowd 2011-02-07 21:06:06