code

Android 조각에서 getIntent (). getExtras ()는 어디서 / 어떻게합니까?

codestyles 2020. 8. 17. 08:58
반응형

Android 조각에서 getIntent (). getExtras ()는 어디서 / 어떻게합니까? [복제]


이 질문에 이미 답변이 있습니다.

활동을 사용하여 다음을 수행했습니다.

활동 1 :

Intent i = new Intent(getApplicationContext(), MyFragmentActivity.class);
                i.putExtra("name", items.get(arg2));
                i.putExtra("category", Category);
                startActivity(i);

활동 2 :

Item = getIntent().getExtras().getString("name");

Fragments를 사용하여 어떻게 수행합니까? 호환성 라이브러리 v4도 사용하고 있습니다.

FragmentActivity에 들어가나요? 아니면 실제 조각? 그리고 어떤 방법으로 들어가나요? onCreate? onCreateView? 다른?

그리고 예제 코드를 볼 수 있습니까?

편집 : 활동 1을 활동 (또는 실제로 클릭 할 때 목록 항목의 의도를 전달하는 ListActivity)으로 유지 한 다음 (조각 활동을 통해) 탭 조각 세트로 전달하려고합니다. 엑스트라를 얻으려면 탭이 필요합니다. (가능하길 바래요?)


제가하는 경향이 있고 이것이 Google이 개발자에게 의도 한 것이라고 생각합니다. Intentin an에서 Activity추가 데이터를 가져온 다음 인수로 인스턴스화하여 추가 데이터를 조각에 전달하는 것입니다.

실제로이 개념을 설명하는 Android 개발자 블로그 의 예가 있으며 여러 API 데모에서도이를 확인할 수 있습니다. 이 특정 예제는 API 3.0+ 프래그먼트에 대해 제공되지만 지원 라이브러리를 사용 FragmentActivity하거나 사용할 때 동일한 흐름이 적용됩니다 Fragment.

먼저 활동에서 평소와 같이 인 텐트 엑스트라를 검색하고이를 프래그먼트에 인수로 전달합니다.

public static class DetailsActivity extends FragmentActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // (omitted some other stuff)

        if (savedInstanceState == null) {
            // During initial setup, plug in the details fragment.
            DetailsFragment details = new DetailsFragment();
            details.setArguments(getIntent().getExtras());
            getSupportFragmentManager().beginTransaction().add(
                    android.R.id.content, details).commit();
        }
    }
}

생성자를 직접 호출하는 대신 인수를 조각에 연결하는 정적 메서드를 사용하는 것이 더 쉬울 것입니다. 이러한 메소드는 GooglenewInstance 에서 제공하는 예제 에서 자주 호출 됩니다 . 실제로에 newInstance메서드가 DetailsFragment있으므로 위의 스 니펫에서 왜 사용되지 않는지 잘 모르겠습니다.

어쨌든 조각을 만들 때 인수로 제공된 모든 추가 항목은을 호출하여 사용할 수 있습니다 getArguments(). 이것은를 반환하기 때문에 Bundle그 사용법은 Activity.

public static class DetailsFragment extends Fragment {
    /**
     * Create a new instance of DetailsFragment, initialized to
     * show the text at 'index'.
     */
    public static DetailsFragment newInstance(int index) {
        DetailsFragment f = new DetailsFragment();

        // Supply index input as an argument.
        Bundle args = new Bundle();
        args.putInt("index", index);
        f.setArguments(args);

        return f;
    }

    public int getShownIndex() {
        return getArguments().getInt("index", 0);
    }

    // (other stuff omitted)

}

당신은 여전히 ​​사용할 수 있습니다

String Item = getIntent().getExtras().getString("name");

에서는 먼저 fragment전화 만하면됩니다 getActivity().

String Item = getActivity().getIntent().getExtras().getString("name");

이렇게하면 코드를 작성할 필요가 없습니다.

참고 URL : https://stackoverflow.com/questions/11387740/where-how-to-getintent-getextras-in-an-android-fragment

반응형