마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

Fragment 안에서 액티비티로 화면전환

0 추천

전체 메뉴를 BottomNavigation으로 만들어서 Fragment를 사용하여 화면전환을 했습니다.

전체메뉴 1,2,3,4를 만들고 4에 설정화면을 넣으려 합니다. 4를 누르고 설정화면 세부메뉴를 버튼으로 구성하였는데 이를 누르면 화면전환이 될 수 있게 하고싶습니다. Fragment에서 액티비티로 전환하려면 intent할때 getActivity()를 이용하라고 나와있는데 이걸 이용하면 계속 빨간줄이 뜹니다.... 전체메뉴를 Fragment로 구성하였을때 세부메뉴에서 화면전환을 하려면 어떻게 해야하나요?

꼬밍 (160 포인트) 님이 2020년 5월 7일 질문

1개의 답변

0 추천
찾는게 이걸까요?

 

startActivity(new Intent(getContext(), TargetActivity.class));
디자이너정 (42,810 포인트) 님이 2020년 5월 7일 답변
public class SettingActivity extends AppCompatActivity {

    @Override
    protected void onCreate( Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.menu_setting);

        Button btn_logout = (Button) findViewById(R.id.setting_logout);
        Button btn_question = (Button) findViewById(R.id.setting_question);
        Button btn_help = (Button) findViewById(R.id.setting_help);
        Button btn_version = (Button) findViewById(R.id.setting_version);

        btn_logout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //onButtonClick(v);
            }
        });

        btn_question.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //onButtonClick(v);
            }
        });

        btn_help.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(getContext(),Setting_help.class);
                startActivity(intent);
            }

        });

코드를 이렇게 작성하였는데 getContext()도 입력하면 계속 빨간줄이 뜨고 따로 함수를 생성하라고 뜹니다...
일단 시작 포인트가 Fragment가 아니고 Activity네요.

Intent intent = new Intent(SettingActivity.this, Setting_help.class);
startActivity(intent);

이렇게 하시면 해결될 듯 한데요.
이렇게 해서 실행해보았지만 에러는 안나지만 설치받아 실행해보면 버튼을 눌러도 화면전환이 되지 않습니다ㅠㅠ
Setting_help.class가 Acitivity class라면 안될 이유가 없는데....
AndroidManifest.xml 에도 Activity component가 선언 되어 있는 것 이겠죠?
<activity android:name=".SettingActivity"/>
넵! 이렇게 선언해놨습니다!ㅠㅠ
package org.techtown.registerlogin;


import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;

public class Setting_help extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.menu_setting_help);
    }
}

이게 Setting_help.class입니다ㅠㅠ
<activity android:name=".Setting_help"/>
이게 선언되어 있어야합니다.

혹시 모르니 class명에 under bar도 빼보세요. (rename)
...