Java 来自与片段无关的另一个活动的片段中的setText

Java 来自与片段无关的另一个活动的片段中的setText,java,android,android-fragments,Java,Android,Android Fragments,我想在另一个活动的片段中设置textView,该活动不是main活动具有片段事务 已经尝试了与我的问题相关的其他相关文章中的一些方法,但出现了错误 这是我在片段中的方法,用于从另一个活动接收 片段A public class FragmentA extends Fragment { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceStat

我想在另一个活动的片段中设置
textView
,该活动不是
main活动
具有片段
事务

已经尝试了与我的问题相关的其他相关文章中的一些方法,但出现了错误

这是我在片段中的方法,用于从另一个活动
接收

片段A

public class FragmentA extends Fragment {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);


        ProgressDialog pDialog = new ProgressDialog(getContext());
        pDialog.setCancelable(false);

    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflating view layout
        View layout = inflater.inflate(R.layout.fragment_A, container, false);

        //Put Data to id fragment
        valueName = (TextView) layout.findViewById(R.id.valueNameNav);
        valueStatus = (TextView) layout.findViewById(R.id.valueStatusNav);

    }

    public void setText(String name, String status){

            valueName = (TextView) getView().findViewById(R.id.valueNameNav);
            valueName.setText(name);
            valueStatus = (TextView) getView().findViewById(R.id.valueStatusNav);
            valueStatus.setText(status);
    }
}
这就是我在活动片段中调用
setText
方法的方式

String editValueName= editName.getText().toString();
String lastStatus = valueStatus.getText().toString();

FragmentA mFragment = (FragmentA )
     getSupportFragmentManager().findFragmentById(R.id.fragment_A);

mFragment.setText(editValueName, lastStatus);
但是我犯了这样的错误

FragmentA newFragment = new FragmentA ();
            FragmentTransaction ft = getFragmentManager().beginTransaction();
            ft.replace(R.id.container, newFragment).commit();
java.lang.NullPointerException:尝试调用虚拟方法“void” com.example.study.fragment.fragmentA.setText(java.lang.String, java.lang.String)“”在空对象引用上


100%确保string
getText

上有一个数据字符串,尝试这样做,并确保您的片段与活动连接

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

    if(savedInstanceState == null)
    {
        fragment = new FragmentA();
        fragment.setTag(R.id.myfragmentId);
        getFragmentManager().beginTransaction()
            .add(R.id.container, fragment).commit();
    }
    else
    {
        if(fragment == null)
        {
            fragment = (FragmentA) getFragmentManager().findFragmentByTag(R.id.myfragmentId);
        }
    }
}

您可以使用store SharedReferences保存字符串并将其加载到各个位置。当然,如果您想更改代码,可以这样做。

在活动中使用id
容器创建框架布局
,高度和宽度与父级匹配 然后像这样在活动中添加片段

FragmentA newFragment = new FragmentA ();
            FragmentTransaction ft = getFragmentManager().beginTransaction();
            ft.replace(R.id.container, newFragment).commit();
然后设置文本

String editValueName= editName.getText().toString();
String lastStatus = valueStatus.getText().toString();
newFragment .setText(editValueName, lastStatus);

不需要在setText方法中查找视图,您应该以这种方式执行,它将起作用

public class FragmentA extends Fragment {

TextView valueName,valueStatus ;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);


    ProgressDialog pDialog = new ProgressDialog(getContext());
    pDialog.setCancelable(false);

}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflating view layout
    View layout = inflater.inflate(R.layout.fragment_A, container, false);

    //Put Data to id fragment
    valueName = (TextView) layout.findViewById(R.id.valueNameNav);
    valueStatus = (TextView) layout.findViewById(R.id.valueStatusNav);

 return layout;
}

public void setText(String name, String status){

        valueName.setText(name);
        valueStatus.setText(status);
}

}

您不能为另一个活动的视图设置文本,您必须在该活动中才能设置文本,您可以使用意图将字符串从一个活动传递到另一个活动。您不能访问不属于该活动的片段。但是如果你真的想完成这样的任务。使用应
广播接收器
。如果你的片段被附加到活动中,你应该连接到这个工作。确保已添加您的片段。哦,谢谢,我的案例是我有一个活动,此活动用于更新名称,保存后,我希望所有片段都更改为名称的新值。有一个碎片没有改变任何东西。我想把这个值加进去。。你们有并没有推荐相关的文章来解决我的问题?请尝试这个链接以获取更多关于如何与活动片段交互的信息?是的,附件中有。让我知道,哪些活动要放在这些代码中??我的片段附加在
MainActivity
中。。i字符串来自
UpdateActivity
。。可能吗?还是空对象,我应该检查字符串的值吗??我很确定另一个片段上的原因已经更新了。只有片段A不是
receive
已尝试的
UpdateActivity
更新,但此处仍然没有更新。。数据来自服务器,服务器上的数据更新,片段上的数据更新。。只有片段_A未更新。但是
SharedReferences
不太推荐该片段附加在
MainActivity
上,我想传递给片段A的数据来自
UpdateActivity
错误的第二个参数类型:发现'com.example.study.fragment.fragmentA,需要'android.app.fragment'替换(int,android.app.fragment)在到(int,com.example.study.fragment.fragmentA)的片段事务中,
ft.replace(R.id.container,newFragment.commit()上显示此错误
newFragment
是您需要在导入中导入android.app.Fragment
而不是导入android.support.v4.app.Fragment的问题