간단한 Android 앱이 있습니다. layout 폴더에는 activity_main.xml 파일과 fragment_main.xml 파일이 표시됩니다. 해당 fragments.xml 파일에서 buttonTest라는 버튼을 배치했습니다. 내가 그 buttonTest에 대한 액세스 권한을 얻기 위해 노력하고있어 MainActivity.java 파일에 ANDROID STUDIO fragment_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>
.
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 변수가 null 포인터로 돌아옵니다. buttonTest 객체를 찾지 못하는 이유는 무엇입니까?
activity_main.xml과 fragment_main.xml은 모두 레이아웃 폴더에 있습니다. 처음 Android Studio를 시작하고 이것을 새로운 앱으로 추가하면 액티비티와 프래그먼트 xml 파일이 자동으로 생성되며 초기 편집을 위해 fragment_main.xml을 강조 표시 (자동 선택)합니다. 그 말은 저에게 내 레이아웃은 실제로는 activity_main.xml이 아닌 fragment_main.xml에 있어야한다는 것입니다. 어디에서 버튼에 액세스해야하는지에 관해서는 MainActivity.java 파일이 있지만 그 프래그먼트에 명시 적으로 일치하는 것은 없습니다. 사실, MainActivity.java는 유일한 자바 파일입니다. –
내가 setContentView (R.layout.activity_main)를 변경하면; setContentView (R.layout.fragment_main);로 설정합니다. [즉 FRAGMENT]에 다음 실제로 단추에 액세스 할 수 및 null이 아닌 포인터를 가져옵니다. 그러나 그때 app은 "유감스럽게도, SnapVest가 작동을 멈췄다"고보고합니다. –