-2

ユーザがImageviewをクリックした場合、popup menuを表示します。いずれか私はIllegalStateExceptionまたはコードがコンパイルされません。ユーザーが画像ビューをクリックしたときにポップアップメニューを表示したい。どちらかがIllegalStateExceptionを取得するか、コードがコンパイルされない

これは私がImageviewと宣言した行にNullPointerExceptionと表示されています。しかし、そのメソッドを実装すると、コードはコンパイルされません。 onCreateOptionsも動作していません。エラーを修正してください。

ImageView imageView; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.my_toolbar); 
    setSupportActionBar(toolbar); 
    // Set the content of the activity to use the activity_main.xml layout file 
    setContentView(R.layout.app); 

    imageView = (ImageView) findViewById(R.id.aaa); 

    // Find the view pager that will allow the user to swipe between fragments 
    ViewPager viewPager = (ViewPager) findViewById(R.id.viewpager); 

    // Create an adapter that knows which fragment should be shown on each page 
    WhatsappFragmentPagerAdapter adapter = new WhatsappFragmentPagerAdapter(this, getSupportFragmentManager()); 

    // Set the adapter onto the view pager 
    viewPager.setAdapter(adapter); 

    // Give the TabLayout the  ViewPager 
    TabLayout tabLayout = (TabLayout) findViewById(R.id.sliding_tabs); 
    tabLayout.setupWithViewPager(viewPager); 
} 


public void showPopup(View v) { 
    PopupMenu popup = new PopupMenu(this, v); 

    // This activity implements OnMenuItemClickListener 
    popup.setOnMenuItemClickListener((PopupMenu.OnMenuItemClickListener) this); 
    popup.inflate(R.menu.app_menu); 
    popup.show(); 
} 

public boolean onMenuItemClick(MenuItem item) { 
    switch (item.getItemId()) { 
     case R.id.main: 
      startActivity(new Intent(App.this, App_Main.class)); 
      return true; 
     case R.id.help: 
      startActivity(new Intent(App.this, App_Main.class)); 
      return true; 
     default: 
      return false; 
    } 
} 

あなたのonClickイベントも、言及した他の人のように、動作しません。事前に感謝

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.my_toolbar); 
    setSupportActionBar(toolbar); 
    // Set the content of the activity to use the activity_main.xml layout file 
    setContentView(R.layout.app); 

    // Find the view pager that will allow the user to swipe between fragments 
    ViewPager viewPager = (ViewPager) findViewById(R.id.viewpager); 

    // Create an adapter that knows which fragment should be shown on each page 
    WhatsappFragmentPagerAdapter adapter = new WhatsappFragmentPagerAdapter(this, getSupportFragmentManager()); 

    // Set the adapter onto the view pager 
    viewPager.setAdapter(adapter); 

    // Give the TabLayout the ViewPager 
    TabLayout tabLayout = (TabLayout) findViewById(R.id.sliding_tabs); 
    tabLayout.setupWithViewPager(viewPager); 
} 

    ImageView imageView = (ImageView) findViewById(R.id.aaa); 

public void showPupup(View v) { 
    PopupMenu popup = new PopupMenu(this, v); 

    // This activity implements OnMenuItemClickListener 
    popup.setOnMenuItemClickListener((PopupMenu.OnMenuItemClickListener) this); 
    popup.inflate(R.menu.app_menu); 
    popup.show(); 
} 

public boolean onMenuItemClick(MenuItem item) { 
    switch (item.getItemId()) { 
     case R.id.main: 
      startActivity(new Intent(App.this, App_Main.class)); 
      return true; 
     case R.id.help: 
      startActivity(new Intent(App.this, App_Main.class)); 
      return true; 
     default: 
      return false; 
    } 
} 

}

 <ImageView 
     android:id="@+id/aaa" 
     android:layout_width="32dp" 
     android:layout_height="32dp" 
     android:src="@drawable/whatsapp_settings" 
     android:layout_alignParentRight="true" 
     android:layout_marginLeft="10dp" 
     android:onClick="showPopup" /> 
+0

ミスマッチ名* showPupup *が必要* showPopup *、それを確認できますか? –

答えて

1

はあなたが間違った場所でImageView、これを試してみてくださいが宣言しましたあなたはスペルミスをしました。

+0

これを試しましたか? –

+1

"(Popupmenu.OnMenuItemClickListener)"を削除したところ、問題なくご利用いただけます。 –

0
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.my_toolbar); 
    setSupportActionBar(toolbar); 
    // Set the content of the activity to use the activity_main.xml 
layout file 
    setContentView(R.layout.app); 

    // Find the view pager that will allow the user to swipe between 
fragments 
    ViewPager viewPager = (ViewPager) findViewById(R.id.viewpager); 

    // Create an adapter that knows which fragment should be shown on each page 
    WhatsappFragmentPagerAdapter adapter = new 
WhatsappFragmentPagerAdapter(this, getSupportFragmentManager()); 

    // Set the adapter onto the view pager 
    viewPager.setAdapter(adapter); 

    // Give the TabLayout the ViewPager 
    TabLayout tabLayout = (TabLayout) findViewById(R.id.sliding_tabs); 
    tabLayout.setupWithViewPager(viewPager); 

    ImageView imageView = (ImageView) findViewById(R.id.aaa); 
} 


public void showPupup(View v) { 
    PopupMenu popup = new PopupMenu(this, v); 

    // This activity implements OnMenuItemClickListener 

popup.setOnMenuItemClickListener((PopupMenu.OnMenuItemClickListener) 
this); 
    popup.inflate(R.menu.app_menu); 
    popup.show(); 
} 

public boolean onMenuItemClick(MenuItem item) { 
    switch (item.getItemId()) { 
     case R.id.main: 
      startActivity(new Intent(App.this, App_Main.class)); 
      return true; 
     case R.id.help: 
      startActivity(new Intent(App.this, App_Main.class)); 
      return true; 
     default: 
      return false; 
    } 
} 
+0

java.lang.IllegalStateException:親または祖先でshowPopup(View)メソッドを見つけることができませんでした。表示クラスandroid.support.v7.widget.AppCompatImageView id 'aaa' 私はこのエラーが発生しています...エラーがどの行に表示されていないのですか...助けてください –

+0

気にしないでください...私はそれを得ました!申し訳ありません。 –

+0

あなたはshowPopupのスペルをXMLまたはjavaで確認してください。同じものでなければなりません。 –

関連する問題