Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/219.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 在将数据通过捆绑包从活动传递到片段时获取null_Java_Android_Android Fragments_Android Activity - Fatal编程技术网

Java 在将数据通过捆绑包从活动传递到片段时获取null

Java 在将数据通过捆绑包从活动传递到片段时获取null,java,android,android-fragments,android-activity,Java,Android,Android Fragments,Android Activity,在通过bundle传递数据的过程中丢失数据 尝试在空对象上调用虚拟方法“java.lang.String android.os.Bundle.getStringjava.lang.String” 字符串bundlePassData处的引用=this.getArguments.getStringtagName 这是我的代码示例。主要活动-> tagsView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

在通过bundle传递数据的过程中丢失数据

尝试在空对象上调用虚拟方法“java.lang.String android.os.Bundle.getStringjava.lang.String” 字符串bundlePassData处的引用=this.getArguments.getStringtagName

这是我的代码示例。主要活动->

 tagsView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
            Bundle bundle = new Bundle();
            TextView textView = (TextView) view.findViewById(R.id.tagName);
            String selectedItemName = textView.getText().toString();
            bundle.putString("tagName", selectedItemName);

            TaskAssignFragment taskAssignFragment = new TaskAssignFragment();
            taskAssignFragment.setArguments(bundle);

            FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
            transaction.commit();

            getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
                    new TaskAssignFragment()).addToBackStack(null).commit();

            Log.i("ListView", selectedItemName);
        }
    });

我应该试试界面吗?但如果我需要数据作为变量,而不仅仅是函数,因为我会在片段中的更多位置使用它。

您可以直接在片段上调用方法,例如:

TaskAssignFragment taskAssignFragment = new TaskAssignFragment();
// Call here your own method (from fragment)
taskAssignFragment.setSelectedItemName(selectedItemName);
        TaskAssignFragment taskAssignFragment = new TaskAssignFragment();
        taskAssignFragment.setArguments(bundle);

        getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
                taskAssignFragment).addToBackStack(null).commit();
在你的片段中:

public void setSelectedItemName(String selectedItemName) {
    // Store data as field in class
    this.selectedName = selectedItemName
}

其中selectedName是类中的字段。

在替换代码时,您将在代码中创建新片段

TaskAssignFragment taskAssignFragment = new TaskAssignFragment();
            taskAssignFragment.setArguments(bundle);

getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
                    new TaskAssignFragment()).addToBackStack(null).commit();
使用已创建的片段实例,在其中设置参数

  getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
                   taskAssignFragment).addToBackStack(null).commit();

请尝试此代码,创建TaskAssignFragment的新实例并在不带参数的情况下传递它

在替换fragment时创建新对象

        TaskAssignFragment taskAssignFragment = new TaskAssignFragment();
        taskAssignFragment.setArguments(bundle);

        getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
                taskAssignFragment).addToBackStack(null).commit();

试试这个

也许你原来的getter返回了null,我在Log.iListView中测试了它,selectedItemName,它只返回我想要的字符串,这不是问题,它与this.getArguments有什么关系?这就是我要说的你从来没有用过你的created with arguments fragment TaskAssign fragment是的,我的错。。修好了,非常感谢!
        TaskAssignFragment taskAssignFragment = new TaskAssignFragment();
        taskAssignFragment.setArguments(bundle);

        getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
                taskAssignFragment).addToBackStack(null).commit();