안드로이드 개발중 onActivityResult에서 onCreateView()를 사용하고 싶은데 오류가 뜹니다 ㅠㅠ
조회수 1680회
public class FragmentE extends Fragment implements View.OnClickListener
{
private static final int EDIT_DATA_REQUEST_CODE = 1;
Button editMyInfo;
ToggleButton quick_view_switch;
private ListView listView;
private CustomAdapter adapter;
public DatabaseHelper dbHelper;
Context mContext;
String myName;
String myRank;
String myTel;
String myAddr;
String myEmail;
//이 메소드를 외부에서 호출하려고합니다.
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.activity_setting, container, false);
mContext = v.getContext();
dbHelper = new DatabaseHelper(mContext);
listView = (ListView) v.findViewById(R.id.setting_listView);
adapter = new CustomAdapter();
listView.setAdapter(adapter);
editMyInfo = (Button)v.findViewById(R.id.editMyInfo);
editMyInfo.setOnClickListener(this);
quick_view_switch = (ToggleButton) v.findViewById(R.id.toggleButton1);
// quick_view_switch.setOnClickListener(this);
return v;
}
@Override
public void onResume(){
super.onResume();
Cursor mCursor = (Cursor)dbHelper.getAllData();
mCursor.moveToFirst();
myName = mCursor.getString(mCursor.getColumnIndexOrThrow(dbHelper.USER_TABLE_COLUMN_NAME));
myRank = mCursor.getString(mCursor.getColumnIndexOrThrow(dbHelper.USER_TABLE_COLUMN_RANK));
myTel = mCursor.getString(mCursor.getColumnIndexOrThrow(dbHelper.USER_TABLE_COLUMN_TEL));
myAddr = mCursor.getString(mCursor.getColumnIndexOrThrow(dbHelper.USER_TABLE_COLUMN_ADDR));
myEmail = mCursor.getString(mCursor.getColumnIndexOrThrow(dbHelper.USER_TABLE_COLUMN_EMAIL));
adapter.add("이름",myName);
adapter.add("번호",myTel);
adapter.add("직급",myRank);
adapter.add("메일",myEmail);
adapter.add("주소",myAddr);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if(resultCode==getActivity().RESULT_OK){
switch (requestCode){
case EDIT_DATA_REQUEST_CODE:
Toast.makeText(mContext, "ELEL", Toast.LENGTH_SHORT).show();
onDestroyView();
onCreateView(); // 여기에 무슨 매개변수가 들어가야될지 모르겠어요..
onStart();
break;
}
}
}
@Override
public void onClick(View v) {
Intent intent = new Intent(getActivity().getApplicationContext(),EditMyInfo.class);
startActivityForResult(intent,EDIT_DATA_REQUEST_CODE);
}
}
onCreate()메소드같이 액티비티가 시작할때 호출되는 메소드를 다른 메소드에서 호출하려면 어떻게 해야될까요??
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
프래그먼트를 재생성하는 것이 목적이라면 다음과 같이 replace() 함수를 이용하시기 바랍니다.
getSupportFragmentManager().beginTransaction() .replace(R.id.content, XXXFragment.newInstance()) .commit();
덧붙여 onCreate(), onDestroy(), onCreateView(), onDetroyView(), onStart(), onStop()...과 같은 생명 주기 함수는 시스템에서 호출하는 함수입니다. 즉, 로직에 의해서 직접 함수를 호출 할 필요가 없고, 그렇게 호출하는 것이 의미가 없습니다. 예를 들면, 시스템에 의해서 onDestroyView()가 호출됐는데 이 함수 내에서 onCreateView()를 호출한다고 해서 프래그먼트가 재생성되지 않는 것과 같습니다.
생명 주기 함수가 호출되는 시점은 아래의 액티비티와 프래그먼트 글을 참고하세요.
-
(•́ ✖ •̀)
알 수 없는 사용자
-
댓글 입력