将文本显示给另一个类

时间:2015-10-26 08:42:21

标签: java android button android-intent onclicklistener

我有一个showAddForm按钮,如Claims.java中的imej。

enter image description here

按下+ button后,它会显示Alert Dialog Window radio buttons。选中radio button后,它将转到特定活动。在活动中,它有一个editText和一个save按钮。当点击活动中的showAddForm按钮时,我想在button save上的editText显示屏上显示该值。我该怎么做才能实现这个目标?

Claims.java

 public class Claims extends Fragment {
    private TextView c;

    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        View claims = inflater.inflate(R.layout.claims, container, false);


        View.OnClickListener listener = new View.OnClickListener() {
            public void onClick(View v) {
                AlertDialogRadio();

            }
        };
        Button button1 = (Button) claims.findViewById(R.id.button10);
        Button button = (Button) claims.findViewById(R.id.button8);
        button1.setOnClickListener(listener);
         c=(TextView)claims.findViewById(R.id.textView49);

        button.setOnClickListener(new View.OnClickListener() {
            public void onClick(View arg0) {
                Intent intent = new Intent(getActivity().getApplicationContext(), CameraMain.class);
                startActivity(intent);
            }
        });
        return claims;
    }

    public void AlertDialogRadio() {
        final CharSequence[] ClaimsModel = {"Project", "Petrol", "Car Maintenance"
                , "Medical", "Other"};

        AlertDialog.Builder alt_bld = new AlertDialog.Builder(getActivity());
        alt_bld.setTitle("Select a Claims");
        alt_bld.setSingleChoiceItems(ClaimsModel, -1, new DialogInterface
                .OnClickListener() {
            public void onClick(DialogInterface dialog, int item) {
                if (item == 0) {
                    Intent intent = new Intent(getActivity().getApplicationContext(), Project1.class);
                    startActivity(intent);
                } else if (item == 1) {
                    Intent intent = new Intent(getActivity().getApplicationContext(), Petrol.class);
                    startActivity(intent);
                } else if (item == 2) {
                    Intent intent = new Intent(getActivity().getApplicationContext(), CarMainten.class);
                    startActivity(intent);
                } else if (item == 3) {
                    Intent intent = new Intent(getActivity().getApplicationContext(), Medical.class);
                    startActivity(intent);
                } else if (item == 4) {
                    Intent intent = new Intent(getActivity().getApplicationContext(), Other.class);
                    startActivity(intent);
                }

            }
        });
        AlertDialog alert = alt_bld.create();
        alert.show();


    }
@Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {

        if (requestCode == 1) {
            if(resultCode == Activity.RESULT_OK){
                String result=data.getStringExtra("text");
                c.setText(result);


            }
            if (resultCode == Activity.RESULT_CANCELED) {
                //Write your code if there's no result
            }
        }
    }//onActivityResult
}

假设用户选择Project。

Project1.java

  public class Project1 extends AppCompatActivity {
    private static String text;
    private static EditText txt;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.project);
       txt= (EditText)findViewById(R.id.editText36);
        Button b=(Button)findViewById(R.id.button17);

        b.setOnClickListener(new View.OnClickListener() {
            public void onClick(View arg0) {
                Intent returnIntent = new Intent();
                text = txt.getText().toString();
                returnIntent.putExtra("text", text);
                setResult(Activity.RESULT_OK, returnIntent);
                finish();
            }
        });

    }
}

现在,当我点击save中的Project1.java按钮时,它会返回AlertDialogRadio,这不是我想要的,文字仍未显示在textView上! 任何人都可以帮助?????

2 个答案:

答案 0 :(得分:1)

您可以在活动中使用startActivityForResult()并覆盖onActivityResult()。您可以在第二个活动中使用setResult()将您想要的任何内容传递给您的来电者活动。

示例herehere

编辑:

如果你想从片段中使用它,你必须在持有片段的Activity中写这个:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
   super.onActivityResult(requestCode, resultCode, data);
}

这会将结果传递给您的片段,因此您可以处理片段内的结果。

正如我已经提到的,您必须使用startActivityForResult()而不是startActivity()

答案 1 :(得分:0)

正如@keybee所说,您应该使用startActivityForResult()从对话框中启动project.class。 在Project1.Class中,当您单击“保存”时,使用startActivity()将值发送回claim.class(不要再次finish()。只需使用onActivityResult(int requestCode, int resultCode, Intent data))。

并在您的Claims.class中使用onActivityResult(int requestCode, int resultCode, Intent data)来接收project1.class发送的值。 你可以在public class Test { private Set<String> set = new TreeSet<>(); public void add(String s) { set.add(s); } } 函数

中的showAddForm按钮上执行setText()