Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.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
使用Android选项卡将信息从一个片段传递到另一个片段不起作用_Android_Android Fragments_Android Tabhost - Fatal编程技术网

使用Android选项卡将信息从一个片段传递到另一个片段不起作用

使用Android选项卡将信息从一个片段传递到另一个片段不起作用,android,android-fragments,android-tabhost,Android,Android Fragments,Android Tabhost,我已经创建了一个基本的android应用程序,它使用TabHost并包含两个选项卡。第一个选项卡有一个用于输入2个值的片段,第二个选项卡有一个包含以下内容的片段:一个用于查看解决方案的按钮,一个用于显示解决方案的TextView,以及一个用于重置两个片段中所有值的按钮。在我第一次运行该应用程序时,所有这些都运行得很顺利。问题在第一次查看解决方案后开始。如果尝试输入两个新数字,然后单击以查看解决方案,则会看到TextView的最后一个值(或“”如果按了重置键,或者在没有按重置键的情况下按了上一个答

我已经创建了一个基本的android应用程序,它使用TabHost并包含两个选项卡。第一个选项卡有一个用于输入2个值的片段,第二个选项卡有一个包含以下内容的片段:一个用于查看解决方案的按钮,一个用于显示解决方案的TextView,以及一个用于重置两个片段中所有值的按钮。在我第一次运行该应用程序时,所有这些都运行得很顺利。问题在第一次查看解决方案后开始。如果尝试输入两个新数字,然后单击以查看解决方案,则会看到TextView的最后一个值(或“”如果按了重置键,或者在没有按重置键的情况下按了上一个答案。对于我可能需要更改的内容的任何建议,我们将不胜感激。如果需要任何其他代码,请告诉我。提前感谢

注意:所有片段导入android.support.v4.app.Fragment

InputFragment.java

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。这是正确的吗?