使用Android选项卡将信息从一个片段传递到另一个片段不起作用
我已经创建了一个基本的android应用程序,它使用TabHost并包含两个选项卡。第一个选项卡有一个用于输入2个值的片段,第二个选项卡有一个包含以下内容的片段:一个用于查看解决方案的按钮,一个用于显示解决方案的TextView,以及一个用于重置两个片段中所有值的按钮。在我第一次运行该应用程序时,所有这些都运行得很顺利。问题在第一次查看解决方案后开始。如果尝试输入两个新数字,然后单击以查看解决方案,则会看到TextView的最后一个值(或“”如果按了重置键,或者在没有按重置键的情况下按了上一个答案。对于我可能需要更改的内容的任何建议,我们将不胜感激。如果需要任何其他代码,请告诉我。提前感谢 注意:所有片段导入android.support.v4.app.Fragment InputFragment.java使用Android选项卡将信息从一个片段传递到另一个片段不起作用,android,android-fragments,android-tabhost,Android,Android Fragments,Android Tabhost,我已经创建了一个基本的android应用程序,它使用TabHost并包含两个选项卡。第一个选项卡有一个用于输入2个值的片段,第二个选项卡有一个包含以下内容的片段:一个用于查看解决方案的按钮,一个用于显示解决方案的TextView,以及一个用于重置两个片段中所有值的按钮。在我第一次运行该应用程序时,所有这些都运行得很顺利。问题在第一次查看解决方案后开始。如果尝试输入两个新数字,然后单击以查看解决方案,则会看到TextView的最后一个值(或“”如果按了重置键,或者在没有按重置键的情况下按了上一个答
public class InputFragment extends Fragment {
public static String answerString = "";
public static EditText e1;
public static EditText e2;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_input,container, false);
EditText et1 = (EditText)view.findViewById(R.id.editText1);
EditText et2 = (EditText)view.findViewById(R.id.editText2);
setEt(et1, et2);
return view;
}
public void setEt(EditText a, EditText b) {
e1 = a;
e2 = b;
}
}
SolutionFragment.java:
public class SolutionFragment extends Fragment {
public String answer;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_solution,container,false);
updateAnswer();
Button b1 = (Button)view.findViewById(R.id.button1);//get answer button
b1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
setText(answer);
}
});
Button b2 = (Button)view.findViewById(R.id.button2);//reset button
b2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
setText("");
InputFragment.e1.setText("");
InputFragment.e2.setText("");
answer = "";
}
});
return view;
}
public void updateAnswer() {
String s1 = InputFragment.e1.getText().toString();
String s2 = InputFragment.e2.getText().toString();
double num1 = Double.parseDouble(s1);
double num2 = Double.parseDouble(s2);
double ans = num1 + num2;
String ansS = String.valueOf(ans);
answer = ansS;
}
public void setText(String s) {
TextView tv = (TextView)getView().findViewById(R.id.textView2);
tv.setText(s);
}
}
基于Shayan Pourvatan()提供的链接,看起来简单的方法是能够: 1) 创建一个包含您想要传递的信息的“bundle”。 2) 从可以访问片段实例的某个位置,使用绑定调用setArguments()。 3) 通过调用getArguments()在片段中的onCreateView()期间读入这些参数 真的,我只关注第5步和链接文章中列出的第5步之后的部分。因此,由于您将在选项卡之间切换,我认为这种方法应该适合您。在切换选项卡之前设置参数,然后在切换到目标选项卡时调用getArguments()
如果有帮助,请告诉我 请看,谢谢。我会检查一下,看看是否有问题helps@Shayanpourvatan,我对你联系到我的那个问题有点困难。这是否意味着除了链接到tab xml文件之外,我还需要将每个片段链接到它自己的activity.xml?您需要在片段上使用bundle来发送和检索片段类中的值,我没有完全遵循。从inputFragment,我需要将意图发送到新的类InputActivity。从那里,我将意向发送到新的类SolutionActivity。然后我绑定意图并传递给现有的SolutionFragment。这是正确的吗?