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

fragment에서 새로운 activity를 띄우고 싶은데 계속 has stopped만 뜨네요ㅜ

0 추천

프래그먼트(MyPageFrag)에서 버튼을 클릭해서 새로운 액티비티(MyPageActivity1)를 띄우려고 합니다.

mypage_bt1을 누르면 액티비티로 이동하게 하고싶은데 아래와 같이 코드를 작성하니까

바텀네비의 마이페이지 메뉴를 누를때 has stopped가 뜨면서 작동을 멈추네요...

혹시 이유가 뭘까요...?

@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    view = inflater.inflate(R.layout.frag_mypage,container,false);



    Button bt1 = view.findViewById(R.id.mypage_bt1);

    bt1.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(getActivity(), MyPageActivity1.class);
            startActivity(intent);
        }
    });
    return view;

 

아래는 manifest 코드 일부이고 그 밑에는 작동을 멈출때 나타나는 로그(?)입니다.

<activity
    android:name=".MainActivity"
    android:theme="@style/Theme.AppCompat.NoActionBar">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

<activity android:name=".MyPageActivity1"/>
E/AndroidRuntime: FATAL EXCEPTION: main
    java.lang.ClassCastException: androidx.appcompat.widget.AppCompatImageButton cannot be cast to android.widget.Button
        at com.soldout.prototypever006.MyPageFrag.onCreateView(MyPageFrag.java:36)
        at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2600)
        at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:881)
        at androidx.fragment.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManagerImpl.java:1238)
        at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:1303)
        at androidx.fragment.app.BackStackRecord.executeOps(BackStackRecord.java:439)
        at androidx.fragment.app.FragmentManagerImpl.executeOps(FragmentManagerImpl.java:2079)
        at androidx.fragment.app.FragmentManagerImpl.executeOpsTogether(FragmentManagerImpl.java:1869)
        at androidx.fragment.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManagerImpl.java:1824)
        at androidx.fragment.app.FragmentManagerImpl.execPendingActions(FragmentManagerImpl.java:1727)
        at androidx.fragment.app.FragmentManagerImpl$2.run(FragmentManagerImpl.java:150)
        at android.os.Handler.handleCallback(Handler.java:605)
        at android.os.Handler.dispatchMessage(Handler.java:92)
        at android.os.Looper.loop(Looper.java:137)
        at android.app.ActivityThread.main(ActivityThread.java:4424)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:511)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
        at dalvik.system.NativeStart.main(Native Method)

BreadHead (240 포인트) 님이 2020년 9월 29일 질문

2개의 답변

0 추천
 
채택된 답변
에러 로그는 caused by ~ 라고 따로 뜬게 있을거에요.

생각해볼수 있는 이유는 bt1이 id를 잘못 지정해서 null 이거나,

MyPageActivity1 클래스의 코드나 MyPageActivity1의 레이아웃 xml에 잘못쓴 부분이 있거나 정도?
익명사용자 님이 2020년 9월 30일 답변
BreadHead님이 2020년 9월 30일 채택됨
0 추천
답변 달아주신분 덕에 xml 쪽을 살펴보았는데요

에러코드 중에 ImageButton cannot be cast to android.widget.Button이라는 문구보고

이미지버튼을 버튼으로 수정하니 작동되네요
BreadHead (240 포인트) 님이 2020년 9월 30일 답변
...