У меня есть простое приложение для Android. В папке макета отображается файл activity_main.xml и файл fragment_main.xml. В этом файле fragment.xml я поместил кнопку, которую я назвал buttonTest.ANDROID STUDIO Не удается получить доступ к объектам в фрагменте_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"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context="com.snapvest.thunderbird.app.MainActivity$PlaceholderFragment">
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true">
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="TEST"
android:id="@+id/buttonTest"
android:layout_gravity="center_horizontal" />
</LinearLayout>
в файле MainActivity.java Я пытаюсь получить доступ к этой buttonTest.
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (savedInstanceState == null) {
getFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment())
.commit();
}
// Get access to the buttons
final Button buttonTest = (Button)findViewById(R.id.buttonTest);
}
Это компилируется нормально. Но когда я запускаю его, переменная buttonTest возвращается как нулевой указатель. Почему он не находит объект buttonTest?
Оба файла activity_main.xml и fragment_main.xml находятся в папке макета. Когда я изначально запускаю Android Studio и добавляю это как новое приложение, я автоматически создаю как активность, так и файлы фрагмента xml, и даже выделяет (автоматически выбирает) фрагмент_main.xml для первоначального редактирования. Это говорит мне, что мой макет должен действительно находиться в файле fragment_main.xml (а не в activity_main.xml). Что касается того, где я должен попытаться получить доступ к кнопке, есть файл MainActivity.java, но явно не соответствует явно фрагменту. Фактически, MainActivity.java является единственным java-файлом. –
Если я изменяю setContentView (R.layout.activity_main); setContentView (R.layout.fragment_main); [Т.е. к FRAGMENT], то я действительно могу получить доступ к кнопке и получить ненулевой указатель на нее. Но тогда приложение сообщает «К сожалению, SnapVest перестала работать». –