UserProfile.java
이라는 탭 활동을 만들었습니다. 많은 분들이 아시다시피, 이런 종류의 활동에는 기본적으로 마법이 발생하는 PlaceholderFragment
이라는 내장 클래스가 있습니다. 당신이 볼 수 있듯이PlaceHolderFragment에서 AsyncTask를 실행 중 : " 'com.example.Activity.this'를 정적 컨텍스트에서 참조 할 수 없습니다.
public static class PlaceholderFragment extends Fragment {
private static final String ARG_SECTION_NUMBER = "section_number";
public PlaceholderFragment() {
}
public static PlaceholderFragment newInstance(int sectionNumber) {
PlaceholderFragment fragment = new PlaceholderFragment();
Bundle args = new Bundle();
args.putInt(ARG_SECTION_NUMBER, sectionNumber);
fragment.setArguments(args);
return fragment;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Some code related to database queries irrelevant to this question...
if (getArguments().getInt(ARG_SECTION_NUMBER) == 1) {
View profileView = inflater.inflate(
R.layout.fragment_user_profile_data,
container,
false
);
// Here's some code intended to get edittext's values irrelevant to this question...
final Button saveProfile = (Button) profileView.findViewById(R.id.profile_save_data);
saveProfile.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
UpdateProfileForm upf = new UpdateProfileForm(
userName.getText().toString(),
userLastName.getText().toString(),
userID.getText().toString(),
userPhone.getText().toString(),
userEmail.getText().toString(),
userAddress.getText().toString()
);
new UpdateProfile().execute(upf);
view.setVisibility(View.GONE);
}
});
return profileView;
} else if (getArguments().getInt(ARG_SECTION_NUMBER) == 2) {
View profileView = inflater.inflate(R.layout.another_fragment, container, false);
return profileView;
} else {
View profileView = inflater.inflate(R.layout.fragment_user_profile_data, container, false);
return profileView;
}
}
}
, 나는 내가 사용자의 데이터를 얻을 경우 양식 조각이 fragment_user_profile_data
라고해야하는 UpdateProfileForm
클래스는 UpdateProfile
는 사용자 정보를 업데이트하는 데 사용라는를 저장하고 AsyncTask를에 전달하기 위해 다음과 같이 내 보인다 saveProfile
버튼을 클릭하면 서버 쪽에서 • 그래도 라인
new UpdateProfile().execute(upf);
'com.example.UserProfile.this'를 시도하는 경우
그러나, 정적 컨텍스트
오류에서 참조 할 수 없습니다 Android Studio에서 표시됩니다. PlaceholderFragment 클래스에서 "정적"속성을 해제하거나 내 AsyncTask를 정적으로 만들지 만 둘 중 어느 것도 작동하지 않는다고 들었습니다.
나는 이것으로 인해 도움이 될 것입니다.
정말 'ARG_SECTION_NUMBER'에 따라 하나의 Fragment가 세 가지 별도의 책임을 처리하는 대신 세 개의 개별 Fragment 클래스를 사용해야합니다 –
@ cricket_007이 작업을 수행하는 방법에 대해 자세히 알려주시겠습니까? 그것은 올바른 방법 (그리고 내가 원하는 방식으로) 들리는 것처럼 들리지만, 본 적이있는 유일한 Tabbed Activity 튜토리얼은이 자리 표시 자 단편을 사용합니다. –
TabLayout에 첨부 된 ViewPager의 PagerAdapter가 위치 기반의 Fragment를 결정합니다 –