如何将数据从一个活动(意图)发送到另一个活动?

我使用此代码发送数据:

Intent i=new Intent(context,SendMessage.class);
i.putExtra("id", user.getUserAccountId()+"");
i.putExtra("name", user.getUserFullName());
context.startActivity(i);

当前回答

您可以从intent中获取任何类型的额外数据,无论是对象、字符串还是任何类型的数据。

Bundle extra = getIntent().getExtras();

if (extra != null){
    String str1 = (String) extra.get("obj"); // get a object

    String str2 =  extra.getString("string"); //get a string
}

最短的解决方案是:

Boolean isGranted = getIntent().getBooleanExtra("tag", false);

其他回答

首先,使用getIntent()方法获取开始活动的意图:

Intent intent = getIntent();

如果额外的数据表示为字符串,则可以使用intent.getStringExtra(字符串名称)方法。在您的案例中:

String id = intent.getStringExtra("id");
String name = intent.getStringExtra("name");

如果您试图获取碎片中的额外数据,则可以尝试使用:

放置数据时使用:

Bundle args = new Bundle();
args.putInt(DummySectionFragment.ARG_SECTION_NUMBER);

使用以下方法获取数据:

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {


  getArguments().getInt(ARG_SECTION_NUMBER);
  getArguments().getString(ARG_SECTION_STRING);
  getArguments().getBoolean(ARG_SECTION_BOOL);
  getArguments().getChar(ARG_SECTION_CHAR);
  getArguments().getByte(ARG_SECTION_DATA);

}

这是针对适配器的,对于您只需要更改mContext的活动对于片段,您需要将mContext更改为获取活动()

 public static ArrayList<String> tags_array ;// static array list if you want to pass array data

      public void sendDataBundle(){
            tags_array = new ArrayList();
            tags_array.add("hashtag");//few array data
            tags_array.add("selling");
            tags_array.add("cityname");
            tags_array.add("more");
            tags_array.add("mobile");
            tags_array.add("android");
            tags_array.add("dress");
            Intent su = new Intent(mContext, ViewItemActivity.class);
            Bundle bun1 = new Bundle();
            bun1.putString("product_title","My Product Titile");
            bun1.putString("product_description", "My Product Discription");
            bun1.putString("category", "Product Category");
            bun1.putStringArrayList("hashtag", tags_array);//to pass array list 
            su.putExtras(bun1);
            mContext.startActivity(su);
        }

按意图放置数据:

Intent intent = new Intent(mContext, HomeWorkReportActivity.class);
intent.putExtra("subjectName", "Maths");
intent.putExtra("instituteId", 22);
mContext.startActivity(intent);

按意图获取数据:

String subName = getIntent().getStringExtra("subjectName");
int insId = getIntent().getIntExtra("instituteId", 0);

如果我们对意图使用整数值,则必须在getIntent().getIntExtra(“instituteId”,0)中将第二个参数设置为0。否则,我们不使用0,Android会给我一个错误。

从意图中获取不同类型的额外信息

要从Intent访问数据,您应该知道两件事。

钥匙数据的DataType。

Intent类中有不同的方法来提取不同类型的数据。看起来像这样

getIntent().XXX(KEY)或intent.XXX(KEY);

因此,如果您知道在otherActivity中设置的变量的数据类型,则可以使用相应的方法。

从Intent检索活动中的字符串的示例

String profileName = getIntent().getStringExtra("SomeKey");

不同数据类型的方法的不同变体列表

您可以在意向正式文档中查看可用方法列表。