我有一个showAddForm
按钮,如Claims.java
中的imej。
按下+ 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上! 任何人都可以帮助?????
答案 0 :(得分:1)
您可以在活动中使用startActivityForResult()
并覆盖onActivityResult()
。您可以在第二个活动中使用setResult()
将您想要的任何内容传递给您的来电者活动。
编辑:
如果你想从片段中使用它,你必须在持有片段的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);
}
}
函数