Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我无法从使用片段的活动访问片段布局内的文本视图_Java_Android_Android Fragments - Fatal编程技术网

Java 我无法从使用片段的活动访问片段布局内的文本视图

Java 我无法从使用片段的活动访问片段布局内的文本视图,java,android,android-fragments,Java,Android,Android Fragments,我已经尝试了下面线程中提到的所有方法 但它们似乎都不适合我。经过一个半小时的努力,我才提出这个问题 我的分类碎片 当用户单击由categories选项卡组成的底部导航视图时,我正在打开categories片段 我的主屏幕活动 这会引发空指针异常,因为它无法获取文本视图。任何帮助/指导都将不胜感激:commitfunction不能同步工作,因此您的片段在调用后不会立即准备就绪 摘自文件 安排此事务的提交。犯罪不会立即发生;它将被安排为下一次线程准备就绪时在主线程上完成的工作 使用commitNow

我已经尝试了下面线程中提到的所有方法 但它们似乎都不适合我。经过一个半小时的努力,我才提出这个问题

我的分类碎片

当用户单击由categories选项卡组成的底部导航视图时,我正在打开categories片段

我的主屏幕活动

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

commitfunction不能同步工作,因此您的片段在调用后不会立即准备就绪

摘自文件

安排此事务的提交。犯罪不会立即发生;它将被安排为下一次线程准备就绪时在主线程上完成的工作

使用commitNow,因为它是同步工作的,并且片段完全处于宿主的lifycycle状态


有关更多信息,请参见当您可以将字符串作为参数传递给fragment的公共方法以更改文本时,为什么要从“活动”获取文本视图并设置文本

您可以将参数done传递给fragment,然后在fragment本身中将文本设置为textview我理解您的意思。我会试试这个。但是,在我的activity类中没有办法做到同样的事情吗?但是使用commitNow会阻止我将其添加到后堆栈中,这是我需要的want@TaQuangTu我认为向活动公开片段视图并允许进行更改不是一个好的过程。这只是向片段传递一个参数的问题。创建视图时,将更改文本值。
    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;
        }

         .

         .

         .

 }
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;
}