gpt4 book ai didi

java - 我无法使用 fragment 从我的 Activity 访问 fragment 布局内的 TextView

转载 作者:行者123 更新时间:2023-12-01 06:01:42 24 4
gpt4 key购买 nike

我已经尝试了以下线程中提到的所有方法 How to access Fragment's child views inside fragment's parent Activity?但它们似乎都不适合我。经过一个半小时的努力,我才提出这个问题。

我的类别 fragment

    public class CategoriesFragment extends Fragment {

private TextView textView;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_categories,container,false);
textView = view.findViewById(R.id.cat_text);
Log.i("Tag",textView.getText().toString());
return view;
}

public TextView getTextView(){
return textView;
}

.

.

.

}

当用户单击包含类别选项卡的底部导航 View 时,我将打开类别 fragment 。

我的主屏幕 Activity

public class HomeScreen extends AppCompatActivity implements BottomNavigationView.OnNavigationItemSelectedListener, CategoriesFragment.OnFragmentInteractionListener{

private BottomNavigationView bottomNavigationView;
private CategoriesFragment categoriesFragment;
private FrameLayout bottomFrameLayout;
private TextView textView;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.home_screen);

bottomNavigationView = findViewById(R.id.bottom_nav_view);
bottomFrameLayout = findViewById(R.id.bottom_nav_frame);
categoriesFragment = new CategoriesFragment();
bottomNavigationView.setOnNavigationItemSelectedListener(this);
}

@Override
public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
switch (menuItem.getItemId()){
case R.id.bottom_nav_categories :
getSupportFragmentManager().beginTransaction().replace(R.id.bottom_nav_frame,categoriesFragment).addToBackStack(null).commit();
textView = categoriesFragment.getTextView();
textView.setText("DONE");
}
return true;
}

这会引发空指针异常,因为它无法获取 TextView 。任何帮助/指导将不胜感激:)

最佳答案

commit()函数不会同步工作,因此您的 fragment 在调用它之后不会立即准备好。

取自文档。

Schedules a commit of this transaction. The commit does not happen immediately; it will be scheduled as work on the main thread to be done the next time that thread is ready.


使用commitNow(),因为它同步工作,并且 fragment 完全进入其主机的 lifycycle 状态。

参见https://developer.android.com/reference/android/support/v4/app/FragmentTransaction.html#commitnow欲了解更多信息

关于java - 我无法使用 fragment 从我的 Activity 访问 fragment 布局内的 TextView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56747215/

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