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

메뉴버튼 클릭시 class호출관련

0 추천
@Override
	public boolean onCreateOptionsMenu(Menu menu) {
        menu.add("새로고침");
        menu.add("캐시삭제");
        menu.add("설정"); //20150827 휴대폰정보추가[모델명, 안드로이드버전, 앱버전]
        return true;
    }

    @Override
    public boolean onPrepareOptionsMenu(Menu menu) {
        return true;
    }
    
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        if ("새로고침" == item.getTitle())
        {
        	mWebView.reload();
        }
        
        if ("캐시삭제" == item.getTitle())
        {
        	File cacheDir = context.getCacheDir();
        	clearCacheFiles(cacheDir);
        	Toast.makeText(context, "캐시가 삭제 되었습니다", Toast.LENGTH_SHORT).show();
        }
        if("설정" == item.getTitle())
        {        	
        	/*Intent intent = new Intent(MainActivity.this, VersionActivity.class);
        	intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        	startActivity(intent);*/
        	
        	Intent intent = new Intent(MainActivity.this, SettingsActivity.class);
        	intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        	startActivity(intent);

        }
        
        return true;
    }

 

 

 

메뉴 버튼을 누르면 설정 이라는게 나오도록 하는데요

 

설정이라는 메뉴를 눌렀을경우

 

startActivity(intent); 를 실행할때 어플이 종료가 되어 버리는데요..

 

이유가 뭘가요..

 

 

SettingsActivity 이거는 다른 어플에서 사용중인걸 그대로 가져와서 아무 문제가 없을거같은데요...

 

어떤거 살펴 봐야 할가요..?

니로 (1,130 포인트) 님이 2015년 8월 28일 질문
니로님이 2015년 8월 28일 수정

1개의 답변

0 추천
 
채택된 답변
JAVA 에서 문자 비교는 equals 로 하셔야 합니다.
하늘아륑 (16,800 포인트) 님이 2015년 8월 28일 답변
니로님이 2016년 3월 10일 채택됨
그..새로고침이나 캐시삭제도 저렇게해도 정상작동을 하고

다른어플에도 저런식으로 작업을 해두었는데 정상작동한다면

지금 나는 에러가 equals문제는 아니지 않나요..?
if(item.getTitle().equals("새로고침"))           
        {
            mWebView.reload();
        }
        
//        if ("캐시삭제" == item.getTitle())
        if(item.getTitle().equals("캐시삭제"))
        {
            File cacheDir = context.getCacheDir();
            clearCacheFiles(cacheDir);
            Toast.makeText(context, "캐시가 삭제 되었습니다", Toast.LENGTH_SHORT).show();
        }
//        if("설정" == item.getTitle())
        if(item.getTitle().equals("설정"))
        {           
            /*Intent intent = new Intent(MainActivity.this, VersionActivity.class);
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            startActivity(intent);*/
           
            Intent intent = new Intent(MainActivity.this, SettingsActivity.class);
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            startActivity(intent);

        }

이렇게 수정해보았습니다만..
설정을 누르면 어플이 그냥종료됩니다 ㅠㅠ
로그한번올려보세용...
if(item.getTitle().equals("설정"))
        {           
            /*Intent intent = new Intent(MainActivity.this, VersionActivity.class);
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            startActivity(intent);*/
           
            Intent intent = new Intent(MainActivity.this, SettingsActivity.class);
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            Log.e("test","111111111111");
            startActivity(intent);
이렇게하고 설정눌럿을때 나오는 에러로그입니당..


08-28 15:02:27.072: E/test(22538): 111111111111
08-28 15:02:27.102: E/AndroidRuntime(22538): FATAL EXCEPTION: main
08-28 15:02:27.102: E/AndroidRuntime(22538): Process: com.entin.mobileentman, PID: 22538
08-28 15:02:27.102: E/AndroidRuntime(22538): android.content.ActivityNotFoundException: Unable to find explicit activity class {com.entin.mobileentman/com.entin.mobileentman.SettingsActivity}; have you declared this activity in your AndroidManifest.xml?
08-28 15:02:27.102: E/AndroidRuntime(22538):     at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1777)
08-28 15:02:27.102: E/AndroidRuntime(22538):     at android.app.Instrumentation.execStartActivity(Instrumentation.java:1499)
08-28 15:02:27.102: E/AndroidRuntime(22538):     at android.app.Activity.startActivityForResult(Activity.java:3942)
08-28 15:02:27.102: E/AndroidRuntime(22538):     at android.app.Activity.startActivityForResult(Activity.java:3889)
08-28 15:02:27.102: E/AndroidRuntime(22538):     at android.app.Activity.startActivity(Activity.java:4213)
08-28 15:02:27.102: E/AndroidRuntime(22538):     at android.app.Activity.startActivity(Activity.java:4181)
08-28 15:02:27.102: E/AndroidRuntime(22538):     at com.entin.mobileentman.MainActivity.onOptionsItemSelected(MainActivity.java:232)
08-28 15:02:27.102: E/AndroidRuntime(22538):     at android.app.Activity.onMenuItemSelected(Activity.java:3024)
08-28 15:02:27.102: E/AndroidRuntime(22538):     at com.android.internal.policy.impl.PhoneWindow.onMenuItemSelected(PhoneWindow.java:1199)
08-28 15:02:27.102: E/AndroidRuntime(22538):     at com.android.internal.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:761)
08-28 15:02:27.102: E/AndroidRuntime(22538):     at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:155)
08-28 15:02:27.102: E/AndroidRuntime(22538):     at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:904)
08-28 15:02:27.102: E/AndroidRuntime(22538):     at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:894)
08-28 15:02:27.102: E/AndroidRuntime(22538):     at com.android.internal.view.menu.IconMenuView.invokeItem(IconMenuView.java:468)
08-28 15:02:27.102: E/AndroidRuntime(22538):     at com.android.internal.view.menu.IconMenuItemView.performClick(IconMenuItemView.java:129)
08-28 15:02:27.102: E/AndroidRuntime(22538):     at android.view.View$PerformClick.run(View.java:20903)
08-28 15:02:27.102: E/AndroidRuntime(22538):     at android.os.Handler.handleCallback(Handler.java:739)
08-28 15:02:27.102: E/AndroidRuntime(22538):     at android.os.Handler.dispatchMessage(Handler.java:95)
08-28 15:02:27.102: E/AndroidRuntime(22538):     at android.os.Looper.loop(Looper.java:145)
08-28 15:02:27.102: E/AndroidRuntime(22538):     at android.app.ActivityThread.main(ActivityThread.java:5942)
08-28 15:02:27.102: E/AndroidRuntime(22538):     at java.lang.reflect.Method.invoke(Native Method)
08-28 15:02:27.102: E/AndroidRuntime(22538):     at java.lang.reflect.Method.invoke(Method.java:372)
08-28 15:02:27.102: E/AndroidRuntime(22538):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)
08-28 15:02:27.102: E/AndroidRuntime(22538):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)
AndroidManifest.xml 에 SettingsActivity 를 등록해주세요

<activity android:name="패키지경로.SettingsActivity" />

그리고 equals 비교하지 않으시면 앱이 죽는걸 떠나서 저 조건문은 의미가 없어요
android.content.ActivityNotFoundException: Unable to find explicit activity class {com.entin.mobileentman/com.entin.mobileentman.SettingsActivity}; have you declared this activity in your AndroidManifest.xml?
이렇게 친절하게 오류원인을 알려주는데....
네.. 안드로이드 처음하다보니.. 아무것도 몰랏네요 ㅠㅠ
...