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

popup menu를 객체화해서 한 액티비티 안에 여러 버튼에 적용하고 싶어요

0 추천

아래와 같이 popup menu객체를 하나 새로 생성해줬구요

다른 activity창에서 이것을 불러와서 실행시키려고 하는데 작동이 안되네요

context.startactivity로 실행하면 되지 않나요?? 

 

오류코드, 실행코드, 해당객체 순서입니다.

 

10-27 11:59:21.379 32283-32283/com.example.hoyun.feed W/dalvikvm: threadid=1: thread exiting with uncaught exception (group=0x418e1360)
10-27 11:59:21.439 32283-32287/com.example.hoyun.feed D/dalvikvm: GC_CONCURRENT freed 105K, 10% free 13387K/14855K, paused 12ms+12ms, total 49ms
10-27 11:59:21.449 32283-32283/com.example.hoyun.feed E/AndroidRuntime: FATAL EXCEPTION: main
10-27 11:59:21.449 32283-32283/com.example.hoyun.feed E/AndroidRuntime: android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity  context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?
10-27 11:59:21.449 32283-32283/com.example.hoyun.feed E/AndroidRuntime:     at android.app.ContextImpl.startActivity(ContextImpl.java:978)
10-27 11:59:21.449 32283-32283/com.example.hoyun.feed E/AndroidRuntime:     at android.app.ContextImpl.startActivity(ContextImpl.java:972)
10-27 11:59:21.449 32283-32283/com.example.hoyun.feed E/AndroidRuntime:     at android.content.ContextWrapper.startActivity(ContextWrapper.java:283)
10-27 11:59:21.449 32283-32283/com.example.hoyun.feed E/AndroidRuntime:     at com.example.hoyun.feed.Profile_Popup$1.onMenuItemClick(Profile_Popup.java:27)
 

 

 

Profile_Popup pop = new Profile_Popup();
pop.showFilterPopup(v,getApplicationContext());

 

 

public class Profile_Popup {
    // Display anchored popup menu based on view selected
    public void showFilterPopup(final View v,final Context context) {
        PopupMenu popup = new PopupMenu(context, v);
        // Inflate the menu from xml
        popup.getMenuInflater().inflate(R.menu.popup_menu, popup.getMenu());
        // Setup menu item selection
        popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
            public boolean onMenuItemClick(MenuItem item) {
                switch (item.getItemId()) {
                    case R.id.menu_keyword:
                        if (v.getId() == R.id.edit) {
                            Intent intent = new Intent(context, Join2.class);
                            intent.putExtra("Pro", "2");
                            context.startActivity(intent);
                        } else if (v.getId() == R.id.edit1) {
                            Intent intent = new Intent(context, RegisterPeople.class);
                            intent.putExtra("pro", "3");
                            context.startActivity(intent);
                        } else if (v.getId() == R.id.edit2) {
                            Intent intent = new Intent(context, RegisterRoom.class);
                            intent.putExtra("pro","4");
                            context.startActivity(intent);
                        }
                        return true;
                    case R.id.menu_popularity:
                        Toast.makeText(context, "Popularity!", Toast.LENGTH_SHORT).show();
                        return true;
                    default:
                        return false;
                }
            }
        });
        // Handle dismissal with: popup.setOnDismissListener(...);
        // Show the menu
        popup.show();
    }
}

익명사용자 님이 2015년 10월 27일 질문

1개의 답변

0 추천
이렇게 올려주셔도 보는 저희는 코드를 알 수 없습니다

다만 유추해보자면 getContext 와 getApplicationContext 의 문제 같은데요

두개는 서로 다른겁니다 getApplicationContext  대신에 this 로 해보세요..
홍월령 (4,240 포인트) 님이 2015년 10월 27일 답변
...