한 활동 (의도)에서 다른 활동으로 데이터를 보내려면 어떻게해야합니까?
이 코드를 사용하여 데이터를 보냅니다.
Intent i=new Intent(context,SendMessage.class);
i.putExtra("id", user.getUserAccountId()+"");
i.putExtra("name", user.getUserFullName());
context.startActivity(i);
한 활동 (의도)에서 다른 활동으로 데이터를 보내려면 어떻게해야합니까?
이 코드를 사용하여 데이터를 보냅니다.
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)
method 를 사용할 수 있습니다 . 귀하의 경우 :
String id = intent.getStringExtra("id");
String name = intent.getStringExtra("name");
getIntent().getStringExtra("id");
ID 문자열을 얻기 위해 전화 합니다
getIntent()
메소드 를 호출하여 활동을 시작한 의도를 얻을 수 있습니다 . 답변을 업데이트했습니다.
받는 활동에서
Bundle extras = getIntent().getExtras();
String userName;
if (extras != null) {
userName = extras.getString("name");
// and get whatever type user account id is
}
getStringExtra?
null
엑스트라 페치 전체를 건너 뛸 수 있습니다. 를 사용 getStringExtra
하면 기본적으로 일련의로 변경됩니다 if(extras != null) { return extras.getString(name) }
. getStringExtra
전화 할 때마다 하나씩 . 이 옵션은 null
한 번만 확인 하면되므로 전혀 읽지 않아도 Bundle
됩니다. 그 외에도 매번 내부적으로 getStringExtra
계속 물어볼 것입니다 getExtras
. 따라서 더 많은 함수 호출이 있습니다.
// 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");
}
FragmentActivity에서 사용되는 경우 다음을 시도하십시오.
첫 페이지는 FragmentActivity를 확장합니다
Intent Tabdetail = new Intent(getApplicationContext(), ReceivePage.class);
Tabdetail.putExtra("Marker", marker.getTitle().toString());
startActivity(Tabdetail);
프래그먼트에서는 getActivity()
먼저 전화 하면됩니다.
두 번째 페이지는 조각을 확장합니다 .
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);
}
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);
** 의도에 따라 데이터 입력-**
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);
Intent 로 Integer 값 을 보내면 getIntent (). getIntExtra ( "instituteId", 0) 에서 두 번째 매개 변수 0을 사용해야 할 때 0을 사용하지 않으면 android에서 오류가 발생합니다.
간단한 방법으로 할 수 있습니다 :
FirstActivity에서 :
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
intent.putExtra("uid", uid.toString());
intent.putExtra("pwd", pwd.toString());
startActivity(intent);
SecondActivity에서 :
try {
Intent intent = getIntent();
String uid = intent.getStringExtra("uid");
String pwd = intent.getStringExtra("pwd");
} catch (Exception e) {
e.printStackTrace();
Log.e("getStringExtra_EX", e + "");
}
첫 번째 활동에서 가치가있는 의도를 전달하십시오.
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
intent.putExtra("uid", uid.toString());
intent.putExtra("pwd", pwd.toString());
startActivity(intent);
두 번째 활동에 대한 의도를 수신;-
Intent intent = getIntent();
String user = intent.getStringExtra("uid");
String pass = intent.getStringExtra("pwd");
일반적으로 값을 보내고 값을 얻기 위해 두 가지 방법을 사용합니다. 값을 전송하기 위해 우리가 사용하는 intent.putExtra("key", Value);
다른 활동에 의도받는 동안 우리는 사용 intent.getStringExtra("key");
과 의도 데이터를 얻을 수 String
또는 데이터 (다른 유형 얻기 위해 다른 가능한 방법을 사용 Integer
, Boolean
등). 키는 가치를 식별하는 키워드 일 수 있으며, 어떤 가치를 공유하고 있는지를 의미합니다. 그것이 당신을 위해 효과가 있기를 바랍니다.
Intent에서 데이터에 액세스하려면 두 가지를 알아야합니다.
Intent 클래스에는 다른 종류의 데이터 유형을 추출하는 다양한 메소드가 있습니다. 이렇게 생겼어요
getIntent (). XXXX (KEY) 또는 intent.XXX (KEY);
따라서 otherActivity에서 설정 한 varibale의 데이터 유형을 알고 있으면 해당 방법을 사용할 수 있습니다.
String profileName = getIntent().getStringExtra("SomeKey");
Intent 공식 문서에서 사용 가능한 메소드 목록을 볼 수 있습니다 .
이것은 어댑터 용이며, 활동의 경우 mContext를 활동 이름으로 변경하고 조각의 경우 mContext를 getActivity ()로 변경해야합니다
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);
}
난 그냥 대답을 게시 여기에 그 몇 가지 대안을 포함하여 좀 더 자세히 커버이 주제를.
그것은 사용 증기 API는 새로운 jQuery를 내가 안드로이드 디바이스를 단순화하기 위해 쓴 안드로이드 프레임 워크에 영감을. 액티비티간에 데이터를 쉽게 전달할 수있는 방법에 대해서는 해당 답변의 예를 확인하십시오.
또한 VaporIntent
메소드 호출을 연결하고 오버로드 된 .put(...)
메소드를 활용할 수있는을 보여줍니다 .
$.Intent().put("data", "myData").put("more", 568)...
Vapor API를 사용하여 전체 응용 프로그램 주위에 데이터를 쉽게 전달할 수 있으므로 앱 개발 중에 여러분과 다른 사람들에게 도움이 되길 바랍니다.
user.getUserAccountId()+""
됩니다. 수집합니다. 사용을 고려String.valueOf(user.getUserAccountId)
, 또는Integer.toString(user.getUserAccountId)
대신.