Android 조각에서 getIntent (). getExtras ()는 어디서 / 어떻게합니까? [복제]
이 질문에 이미 답변이 있습니다.
- Android : 데이터 (추가)를 조각 4 답변으로 전달
활동을 사용하여 다음을 수행했습니다.
활동 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이 개발자에게 의도 한 것이라고 생각합니다. Intent
in 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
'code' 카테고리의 다른 글
점 표기법 문자열을 사용하여 개체 자식 속성에 액세스 (0) | 2020.08.17 |
---|---|
UINavigationController "pushViewController : animated"에 대한 완료 처리기? (0) | 2020.08.17 |
동일한 onclick에서 두 함수 호출 (0) | 2020.08.17 |
Robolectric에서 애플리케이션의 컨텍스트에 어떻게 액세스 할 수 있습니까? (0) | 2020.08.17 |
Git Checkout 경고 : 파일 링크를 해제 할 수 없습니다. 권한이 거부되었습니다. (0) | 2020.08.17 |