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%确保stringgetText
上有一个数据字符串,尝试这样做,并确保您的片段与活动连接
@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的问题