-2

Ich möchte eine popup menu anzeigen, wenn ein Benutzer auf meine Imageview klickt. Entweder bekomme ich einen IllegalStateException oder den Code wird nicht kompiliert.Ich möchte ein Popup-Menü anzeigen, wenn ein Benutzer auf meine Bildansicht klickt. Entweder bekomme ich eine IllegalStateException oder der Code kompiliert nicht

Dafür bekomme ich eine NullPointerException auf der Linie, wo ich Imageview erklärt habe. Aber wenn ich seine Methoden implementiere, wird der Code nicht kompiliert. onCreateOptions funktioniert auch nicht. Bitte beheben Sie den Fehler. Vielen Dank im Voraus

@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

Mismatch Name * showPupup * aber erforderlich * showpopup *, können Sie es überprüfen. –

Antwort

1

Sie erklärt Ihre ImageView an der falschen Stelle, versuchen Sie dies:

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; 
    } 
} 

Ihr OnClick-Ereignis wird auch nicht funktionieren, wie die anderen erwähnt, Du hast einen Schreibfehler gemacht.

+0

Haben Sie das versucht? –

+1

Ich habe gerade "(Popupmenu.OnMenuItemClickListener)" entfernt und es funktioniert gut ... Entschuldigung für das Problem –

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: Konnte die Methode showPopup (View) in einem Eltern oder Vorfahren nicht finden Kontext für android: onClick Attribut definiert auf view class android.support.v7.widget.AppCompatImageView mit der ID 'aaa' Ich bekomme diesen Fehler ... und es zeigt nicht, in welcher Zeile der Fehler ist ... bitte helfen –

+0

Macht nichts ... ich habe es ! Sorry für das Problem –

+0

können Sie bitte überprüfen Sie Ihre ShowPopup Rechtschreibprüfung in XML oder Java müssen sie gleich sein. –

Verwandte Themen