【发布时间】:2016-08-05 21:20:54
【问题描述】:
我想在另一个活动的片段中设置textView,该活动不是MainActivity 有片段transaction ..
已经尝试了其他相关文章中与我的问题相关的一些方法,但出现错误..
这是我从另一个活动到 recieve 的片段内的方法
片段 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);
但出现这样的错误
java.lang.NullPointerException: 尝试调用虚方法 'void com.example.study.fragment.fragmentA.setText(java.lang.String, java.lang.String)' 在空对象引用上
100% 确定字符串 getText 上有数据字符串
【问题讨论】:
-
您不能为另一个活动的视图设置文本,您必须在该活动中设置文本,您可以使用意图将字符串从一个活动传递到另一个活动
-
您无法访问不属于该活动的片段。但如果你真的想执行这样的任务。使用应该
BroadcastReceiver。如果您的片段附加到活动,您应该接口到这项工作。 -
这里的片段为空(或)片段未处于添加状态。确保您的片段已添加。
-
哦,谢谢,我的情况是我有一个活动,这个活动用于更新名称,保存后我希望所有片段都更改为新的名称值。有 1 个片段没有改变任何东西。我想把这个值放进去。你有没有推荐相关的文章来解决我的问题?
-
尝试此链接以获取有关如何与来自活动developer.android.com/training/basics/fragments/…的片段交互的更多信息
标签: java android android-fragments