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

intent를 사용하여 화면전환을 하면 앱이 중지되고 종료됩니다..

0 추천

똑같은 증상이 있는 질문을 찾아봤는대 없는 거 같아서 질문드립니다..

package unknownPG.Firstwork;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {


    private Button btn_move_membership;


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

  btn_move_membership = findViewById(R.id.btn_move_membership);
  btn_move_membership.setOnClickListener(new View.OnClickListener() {


@Override
public void onClick(View v) { Intent intent = new Intent(MainActivity.this, SubActivity.class);
                startActivity(intent); //액티비티 이동 구문
            }
        });


    }

}

작성한 코드는 위와 같고 앱은 실행은되는대 버튼만 누르면 앱이 종료되네요..
오류인지는 모르겠지만 Problems:Current file에는 노란색 표지판과 함께 이런문구가 나옵니다...
Field can be converted to a local variable : 13
Anonymous new View.OnClickListener() can be replaced with lambda : 22
AndroidDdobot (260 포인트) 님이 2021년 11월 5일 질문
AndroidDdobot님이 2021년 11월 5일 수정
Field can be converted to a local variable : 13
위의 오류는
public Button btn_move_membership; 으로 고친후 뜨지 않습니다...

1개의 답변

+1 추천
님이 올리신 메세지는 경고메세지 또는 코드를 수정하라는 권고 메세지이구요. private을 public 으로 바꾸신 건 원래대로 private으로 하시는게 더 좋아요. 올리신 코드로는 에러는 없을 것 같고 아마도, AndroidManifest.xml에 SubActivity를 등록하지 않으신 것은 아닐까 하는 생각이 듭니다. 그렇지 않다면 SubActivity에 인터넷에 접근하는 코드가 있는데 AndroidManifest.xml 인터넷 권한을 등록하지 않으셨던가 할 것 같아요. 안드로이드 로그캣의 로그레벨을 Error로 세팅하시면 에러만 필터해서 보실 수있습니다
spark (227,530 포인트) 님이 2021년 11월 5일 답변
AndroidManifest.xml 파일 내용이 이러한대 혹시 고쳐야될게있나요 ,,???

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="unknownPG.Firstwork">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/krw"
        android:label="@string/앱이름"
        android:roundIcon="@mipmap/krw_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.Firstwork">


        <activity
            android:name=".MainActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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


    </application>

</manifest>
와 진짜.. 감사합니다

<activity
            android:name=".SubActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
추가 하니까 해결됬습니다.. 정말 감사합니다.!!! (2시간동안 해맸어요...)
진짜 감사해요 ㅠㅠ..

혹시 괜찮으면 질문하나만 더해도 괜찮을까요...??

위의 코드를 추가하면 <activity>....</activity>문이 2개인거잖아요?? 이거 간략화 할 수는 없을까요??/
MainActivity에 붙는 Intent-filter는 처음에 앱이 시작할 때 뜨는 액티비티를 지정할 때 사용하는 겁니다.
이렇게 하면 모바일의 바탕화면에 아이콘이 생기는 거죠. 따라서 SecondActivity에는 필요가 없을 거라고 생각이 드네요. 그냥 아래처럼 하시면 될 듯한데요.

<activity
            android:name=".SubActivity"
            android:exported="true" />

아마 현재 세팅하신 대로 하면 아마 화면에 앱아이콘이 두개 생기고 하나는 MainActivity가 다른 하나는 SecondActivity가 제일 먼저 열릴거예요.
현재 잘 해결됬습니다.!! 감사합니다.
...