안드로이드 개발중 onActivityResult에서 onCreateView()를 사용하고 싶은데 오류가 뜹니다 ㅠㅠ

조회수 1674회
    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()를 호출한다고 해서 프래그먼트가 재생성되지 않는 것과 같습니다.

    생명 주기 함수가 호출되는 시점은 아래의 액티비티와 프래그먼트 글을 참고하세요.

    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)