例如,我的布局看起来像这样
<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"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity">
</RelativeLayout>
我可以吗
RelativeLayout rl = (RelativeLayout)findViewById(R.layout.activity_main);
rl.someMethod();
当我尝试尝试NPE时,我很好奇,如果这样做是可行的。
答案 0 :(得分:1)
不,你不能。您总是想为RelativeLayout创建一个id并提及该ID
<RelativeLayout
android:id="@+id/a"
/>
RelativeLayout rl =(RelativeLayout)findViewById(R.id.a);
答案 1 :(得分:1)
当然可以在执行此操作时访问此布局。
您获得NullPointerException
因为您正在访问不存在的activity_main
。您在XML文件中的布局没有指定其ID,而当您尝试获取activity_main
时,它应该具有相同名称的ID:
android:id="@+id/activity_main"
答案 2 :(得分:1)
你需要
android:id="@+id/relativeLayout"
然后
setContentView(R.layout.activity_main); // set layout to the activity
RelativeLayout rl = (RelativeLayout)findViewById(R.id.relativeLayout);
// then initialize views
得到NullPointerException
findViewById
,但是找不到提到的ID为整数值的视图。你还有R.layout.activity_main
。
我不知道someMethod()
是什么。您需要查看RelativeLayout
公共方法
http://developer.android.com/reference/android/widget/RelativeLayout.html
答案 3 :(得分:1)
您可以以编程方式访问RelativeLayout
。你做错了是你试图访问findViewById中的布局文件。你应该做的是指定相对布局的id,而不是包含它的文件的名称。为此,首先使用
android:id="@+id/someRelativeLayout"
然后调用setContentView(R.layout.activity_main)
后:
RelativeLayout rl = (RelativeLayout)findViewById(R.id.someRelativeLayout);
rl.someMethod();
答案 4 :(得分:1)
如果您想获取对创建的布局的访问权限,请向您的xml添加id并使用findViewById 像这样:
在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"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity"
android:id="@+id/id">
</RelativeLayout>
在java中
RelativeLayout rl = (RelativeLayout)findViewById(R.id.id);
如果要从xml创建布局,则应使用此代码
LayoutInflater inflater = (LayoutInflater) this.getContext()
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
RelativeLayout layout = inflater.inflate(R.layout.activity_main, parent_view, false); //parent view is your activity view