我该如何从一个activity(意图)发送数据到另一个activity?
我使用以下代码来发送数据:
Intent i=new Intent(context,SendMessage.class);
i.putExtra("id", user.getUserAccountId()+"");
i.putExtra("name", user.getUserFullName());
context.startActivity(i);
我该如何从一个activity(意图)发送数据到另一个activity?
我使用以下代码来发送数据:
Intent i=new Intent(context,SendMessage.class);
i.putExtra("id", user.getUserAccountId()+"");
i.putExtra("name", user.getUserFullName());
context.startActivity(i);
首先,使用getIntent()
方法获取启动您的活动的意图:
Intent intent = getIntent();
如果你的额外数据是以字符串表示的,那么你可以使用intent.getStringExtra(String name)
方法。在你的情况下:
String id = intent.getStringExtra("id");
String name = intent.getStringExtra("name");
getIntent().getStringExtra("id");
来获取id字符串。 - cchenesongetIntent()
方法来获取启动您的活动的意图。我已经更新了答案。 - Malcolm在接收活动中
Bundle extras = getIntent().getExtras();
String userName;
if (extras != null) {
userName = extras.getString("name");
// and get whatever type user account id is
}
// How to send value using intent from one class to another class
// class A(which will send data)
Intent theIntent = new Intent(this, B.class);
theIntent.putExtra("name", john);
startActivity(theIntent);
// How to get these values in another class
// Class B
Intent i= getIntent();
i.getStringExtra("name");
// if you log here i than you will get the value of i i.e. john
String value = "Hello World!";
Intent intent = new Intent(getApplicationContext(), NewActivity.class);
intent.putExtra("sample_name", value);
startActivity(intent);
String value;
Bundle bundle = getIntent().getExtras();
if (bundle != null) {
value = bundle.getString("sample_name");
}
不需要初始化新的Intent来接收数据,只需这样操作:
String id = getIntent().getStringExtra("id");
按意图放置数据:
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);
如果我们在意图中使用整数值,那么第二个参数必须为0在getIntent().getIntExtra("instituteId", 0)
中。否则,如果不使用0,Android会报错。
如果在 FragmentActivity 中使用,请尝试以下方法:
第一个页面扩展 FragmentActivity
Intent Tabdetail = new Intent(getApplicationContext(), ReceivePage.class);
Tabdetail.putExtra("Marker", marker.getTitle().toString());
startActivity(Tabdetail);
在该片段中,您只需要先调用getActivity()
。
第二页扩展了Fragment。String receive = getActivity().getIntent().getExtras().getString("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);
}
无论是对象、字符串或其他类型的数据,你都可以从意图中获取任何类型的额外数据。
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);
First Activity
val intent = Intent(this, SecondActivity::class.java)
intent.putExtra("key", "value")
startActivity(intent)
第二个活动
val value = getIntent().getStringExtra("key")
建议
将密钥放入常量文件中以实现更有序的管理。
companion object {
val PUT_EXTRA_USER = "PUT_EXTRA_USER"
}
user.getUserAccountId()+""
,因为这会创建不必要的对象需要进行收集。考虑使用String.valueOf(user.getUserAccountId())
或Integer.toString(user.getUserAccountId())
来代替。 - pkk