如何获得Activity的内容视图?

我应该调用什么方法来知道一个Activity是否有它的contentView(一旦调用了方法setContentView() )?

this.getWindow().getDecorView().findViewById(android.R.id.content) 

要么

 this.findViewById(android.R.id.content) 

要么

 this.findViewById(android.R.id.content).getRootView() 

如果您将ID添加到您的布局,则可以查看返回。

 <RelativeLayout android:id="@+id/my_relative_layout_id" 

并从findViewById调用它…

你可能想尝试View.getRootView()

怎么样

 View view = Activity.getCurrentFocus(); 

您也可以重写onContentChanged() ,当setContentView()被调用时会onContentChanged()

没有“isContentViewSet”方法。 你可以在setContentView之前把一些requestWindowFeature调用放到try / catch块中,像这样:

尝试{
   requestWindowFeature(Window.FEATURE_CONTEXT_MENU);
  的setContentView(...)
 catch(AndroidRuntimeException e){
   //做什么都不要做
 }

如果内容视图已经设置,requestWindowFeature将会抛出一个exception。

我发现的最好的select和较less的侵入性,就是在你的xml中设置一个标签参数

电话XML布局

 <android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/pager" android:layout_width="match_parent" android:layout_height="match_parent" android:tag="phone"/> 

平板电脑XML布局

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/pager" android:layout_width="match_parent" android:layout_height="match_parent" android:tag="tablet"> ... </RelativeLayout> 

然后在你的活动课中调用这个:

 View viewPager = findViewById(R.id.pager); Log.d(getClass().getSimpleName(), String.valueOf(viewPager.getTag())); 

希望它适用于你。