itsource

안드로이드에서 의도한 추가 데이터를 얻으려면 어떻게 해야 합니까?

mycopycode 2023. 6. 6. 08:20
반응형

안드로이드에서 의도한 추가 데이터를 얻으려면 어떻게 해야 합니까?

한 활동(의도)에서 다른 활동으로 데이터를 전송하려면 어떻게 해야 합니까?

이 코드를 사용하여 데이터를 보냅니다.

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

반응형