안드로이드에서 의도한 추가 데이터를 얻으려면 어떻게 해야 합니까?
한 활동(의도)에서 다른 활동으로 데이터를 전송하려면 어떻게 해야 합니까?
이 코드를 사용하여 데이터를 보냅니다.
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");
수신 활동 중
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");
}
데이터를 수신하기 위해 다른 새로운 의도를 초기화하는 대신 다음 작업을 수행합니다.
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을 사용하지 않으며 안드로이드는 나에게 오류를 줍니다.
fragment Activity에서 사용하는 경우 다음을 시도합니다.
첫 번째 페이지는 Fragment Activity를 확장합니다.
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);
}
코틀린
첫 번째 활동
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"
}
개체, 문자열 또는 데이터 유형에 관계없이 모든 유형의 추가 데이터를 가져올 수 있습니다.
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);
제안일 뿐입니다.
i.putExtra("id"...)에서 "id"나 "name"을 사용하는 대신, 적절한 경우 putExtra(...)와 함께 사용할 수 있는 현재 표준 필드를 사용하는 것이 좋습니다.의도.EXTRA_뭔가.
전체 목록은 Intent(Android Developers)에서 확인할 수 있습니다.
간단한 방법으로 할 수 있습니다.
첫 번째 활동:
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
intent.putExtra("uid", uid.toString());
intent.putExtra("pwd", pwd.toString());
startActivity(intent);
두 번째 활동:
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 in = new Intent(MainActivity.this, Booked.class);
in.putExtra("filter", "Booked");
startActivity(in);
의도에서 가치를 얻다
Intent intent = getIntent();
Bundle bundle = intent.getExtras();
String filter = bundle.getString("filter");
의도에서 다양한 유형의 추가 정보 얻기
Intent(의도)에서 데이터에 액세스하려면 두 가지를 알아야 합니다.
- 열쇠
- 데이터 데이터 유형입니다.
Intent 클래스에는 다른 종류의 데이터 유형을 추출하는 다른 메서드가 있습니다.이렇게 생겼어요.
의도()를 얻다.XXXX(키) 또는 의도.XXX(키);
따라서 다른 활동에서 설정한 변수의 데이터 유형을 알고 있다면 해당 방법을 사용할 수 있습니다.
활동의 문자열을 의도에서 검색하는 예제
String profileName = getIntent().getStringExtra("SomeKey");
다양한 데이터 유형에 대한 다양한 메소드 목록
사용 가능한 방법 목록은 의향서 공식 문서에서 확인할 수 있습니다.
이것은 어댑터용이며, 활동의 경우 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);
}
언급URL : https://stackoverflow.com/questions/4233873/how-do-i-get-extra-data-from-intent-on-android
'itsource' 카테고리의 다른 글
가져오기 오류: dateutil.parser라는 모듈이 없습니다. (0) | 2023.06.06 |
---|---|
dplyr에 가입할 때 x와 y에 대한 열 이름을 지정하는 방법은 무엇입니까? (0) | 2023.06.06 |
firebase deploy -- 함수만 기존 함수를 재정의합니다. (0) | 2023.06.06 |
문자열 벡터를 할당하여 열 이름으로 빈 데이터 프레임을 생성하시겠습니까? (0) | 2023.06.06 |
Firebase에서 사용자 데이터를 암호화하는 방법 (0) | 2023.06.06 |