Android 从一项活动返回到另一项活动

Android 从一项活动返回到另一项活动,android,Android,我有一个活动,它包含一系列显示数据的元素(日期、时间、数字、描述)。当我选择其中一个元素时,一个新的活动开始,并且来自所选元素的先前数据填充新活动的字段。如果字段为空,则可以输入新数据 选择“完成”按钮返回主活动,并用弹出窗口中输入的新数据填充相关元素 我的问题是,当返回到主活动时,我当前使用public void onResume()后跟代码来用数据填充元素,但这是正确的方法吗?因为当我返回到主活动时,来自其他元素的所有其他数据都消失了。这不好 每个元素(Mon1、Mon2、Mon3、Tues

我有一个活动,它包含一系列显示数据的元素(日期、时间、数字、描述)。当我选择其中一个元素时,一个新的活动开始,并且来自所选元素的先前数据填充新活动的字段。如果字段为空,则可以输入新数据

选择“完成”按钮返回主活动,并用弹出窗口中输入的新数据填充相关元素

我的问题是,当返回到主活动时,我当前使用public void onResume()后跟代码来用数据填充元素,但这是正确的方法吗?因为当我返回到主活动时,来自其他元素的所有其他数据都消失了。这不好

每个元素(Mon1、Mon2、Mon3、Tues1、Tues2等)的每个数据字段(EditText)都有一个唯一的id,如果这有帮助(或阻碍)


谢谢你说的是对话吗?您不需要为此创建新的活动。创建一个自定义对话框,并使用onDialogPositiveClick()侦听器将参数传回

首先,MainActivity应该实现TableDialogFragment.NoticeDialogGlistener

然后,在对话类中:

public class TablesDialogFragment extends DialogFragment implements OnLongClickListener {

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
    final ArrayList<String> mSelectedItems = new ArrayList<String>(); 
    String title = getArguments().getString("title");
    final String[] tables = getArguments().getStringArray("key");
    ContextThemeWrapper ctw = new ContextThemeWrapper( getActivity(), R.style.AlertDialogCustom);



    AlertDialog.Builder builder = new AlertDialog.Builder(ctw);

    if(tables.length !=0){
        builder.setTitle(title)
              .setMultiChoiceItems(tables, null,
                  new DialogInterface.OnMultiChoiceClickListener() {
           @Override
           public void onClick(DialogInterface dialog, int which,
                   boolean isChecked) {
               if (isChecked) {
                   // If the user checked the item, add it to the selected items
                   mSelectedItems.add(tables[which]);
               } else if (!isChecked) {
                   // Else, if the item is already in the array, remove it 
                  mSelectedItems.remove(tables[which]);
               }
           }
       })
        .setPositiveButton("Ok", new DialogInterface.OnClickListener() {
               @Override
               public void onClick(DialogInterface dialog, int id) {
                   // User clicked OK, so save the mSelectedItems results somewhere
                   // or return them to the component that opened the dialog
                   String[] selected = mSelectedItems.toArray(new String[mSelectedItems.size()]);

//Here I pass the String[] to the MainActivity
                   mListener.onDialogPositiveClick(TablesDialogFragment.this, selected);



               }
           })
           .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
               @Override
               public void onClick(DialogInterface dialog, int id) {

                       //Collapse SearchView
                       MainActivity.getSearchMenuItem().collapseActionView();

               }
           });
    } else{
        builder.setTitle("Sorry to tell you this, but... :(");
        builder.setMessage("Why don't you try something different?")

        .setPositiveButton("Ok", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int id) {
                //Collapse SearchView
               MainActivity.getSearchMenuItem().collapseActionView();
            }
        });

    }
        return builder.create();
}
  • 如果覆盖
    onResume()
    请确保在执行自定义逻辑之前链接到
    super.onResume()

  • 当您开始第二个活动并希望返回结果时,请使用。然后,要获得结果,请重写。有关更多详细信息,请参阅。这里也有相关的问题

  • 您可以使用
    对话框
    ,而不是其他人已经建议的第二个
    活动


  • 你在找什么?干杯,谢谢。我试试看。
    private String[] selectedItems;
    
    public void callDialog(){
    
        TablesDialogFragment newFragment = new TablesDialogFragment();
        Bundle args = new Bundle();
        String[] array = {"hey", "you"};
        args.putString("title", "Title of The Dialog");
        args.putStringArray("key", array);
        newFragment.setArguments(args);
        newFragment.show(getSupportFragmentManager(), "Table");
    }
    @Override
    public void onDialogPositiveClick(DialogFragment dialog, String[] selected) {
        // TODO Auto-generated method stub
        selectedItems = selected;
    
                //Do Whatever you want with the arguments in your MainActivity
    
    }