gpt4 book ai didi

ANDROID STUDIO 无法访问 fragment_main.xml 中的对象

转载 作者:太空狗 更新时间:2023-10-29 16:03:57 24 4
gpt4 key购买 nike

我有一个简单的 Android 应用程序。布局文件夹显示一个activity_main.xml 文件和一个fragment_main.xml 文件。在那个 fragment.xml 文件中,我放置了一个我命名为 buttonTest 的按钮。

<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 对象?

最佳答案

我想我找到了解决方案。 MainActivity.java 设置 activity_main.xml,然后使用 fragment_main.xml 作为其(最初)单一的主要 fragment 。这就是为什么我们实际上应该将 Activity 的所有 UI 主要放在 fragment_main.xml 中(实际上什么都不放在 activity_main.xml 中)。

在 MainActivity.java 的底部附近有一个部分用于初始化 fragment_main.xml。正是在那里,我需要访问该 fragment 的按钮和 UI 的其他对象。如:

/**
* A placeholder fragment containing a simple view.
*/
public static class PlaceholderFragment extends Fragment {

public PlaceholderFragment() {
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_main, container, false);

// Get access to the buttons
final Button buttonAvailableOptions = (Button)rootView.findViewById(R.id.buttonAvailableOptions);

return rootView;
}
}

上面的大部分内容是由 Android Studio 自动添加的。以“获取按钮的访问权限”开头的部分是我的部分,您可以在其中设置对按钮和其他 UI 对象的任何访问或处理。

关于ANDROID STUDIO 无法访问 fragment_main.xml 中的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21741686/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com