android 如何使用intent返回数据给mainActivity

android how to use intent to give back data to mainActivity

我有 DialogSheet Acivity 类似的形式我想将数据发送到 MainActivity 如何尝试了很多但从来没有工作

保存按钮获取用户的所有信息然后保存,但我不知道如何将其发送到主

Save.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
            // take all the information form the user then save it to the card
            // i used getActivity instead of MyclassName.this bcs it did not work
                Intent intent = new Intent(getActivity(),MainActivity.class);
                String Sname =Name.getText().toString();
                String Sweight = Weight.getText().toString();
                String Sdate = SelectDate.getText().toString();

               // intent send to MainActivity 
                intent.putExtra("ExtraName",Sname);
                intent.putExtra("ExtraWeight",Sweight);
                intent.putExtra("ExtraDate",Sdate);

                // it did not work i dont know why 
                MainActivity.logArrayList.add(new Log(Sname,Sweight,Sdate));
               startActivity(intent);
            }
        });

        return v;
    }

我如何在 MainActivity 中使用 intent 我尝试在 DialogSheet Acivity 中使用 insert() 但它唯一的问题请帮助我


   protected void onCreate(Bundle savedInstanceState) { 
           Intent intent = getIntent();
           String  Bname = intent.getStringExtra("ExtraName");
           String  Bweight = intent.getStringExtra("ExtraWeight");
           String  Bdate = intent.getStringExtra("ExtraDate");

  }
    public void insert(){
         logArrayList.add(new Log(Bname,Bweight,Bdate));
         LogAdapter.notifyDataSetChanged();
     }

使用 Bundle 恢复数据。

  protected void onCreate(Bundle savedInstanceState) { 
           Bundle b = getIntent().getExtras();
           String  Bname = b.getStringExtra("ExtraName");
           String  Bweight = b.getStringExtra("ExtraWeight");
           String  Bdate = b.getStringExtra("ExtraDate");

    }

如果您从 MainActivity 呼叫 DialogSheet,您可以这样做:

像这样向您的 MainActivity 添加一个方法:

void addCard(String name, String weight, String date){
  // here add item to list
}

并将 DialogSheet 处的点击侦听器代码更改为:

Save.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
            // take all the information form the user then save it to the card
            ((MainActivity) getActivity()).addCard(
                                            Name.getText().toString(),
                                            Weight.getText().toString(),
                                            SelectDate.getText().toString()
                                            );
            }
        });
    }