it-swarm-id.com

Tidak dapat mengesampingkan onCreateOptionsMenu di ListFragment

Saya membuat aplikasi yang mendukung versi ponsel dan tablet jadi saya menggunakan perpustakaan Android-support-v4.jar. 

Aktivitas saya memperluas ListFragment dan saya mencoba menimpa onCreateOptionsMenu (menu Menu, inflater MenuInflater), seperti pada tautan berikut: http://developer.Android.com/resources/samples/Support4Demos/src/com/example/ Android/supportv4/app/FragmentMenuSupport.html

Saya sebelumnya menelepon setHasOptionsMenu.

Sayangnya, sepertinya saya tidak bisa menimpa onCreateOptionsMenu ().

Ini adalah pesan kesalahan:

Metode onCreateOptionsMenu (Menu menu, MenuInflater inflater) dari ketik MyFragment harus menimpa atau mengimplementasikan metode supertype.

Dan saya melakukannya dengan:

Public class MyFragment extends ListFragment
28
Waza_Be

Pastikan impor berasal dari perpustakaan kompatibilitas dan bukan dari SDK itu sendiri.

55
Maria Neumayer

OK, saya baru saja mengalami masalah yang sama, meskipun tidak diperbaiki oleh apa yang ada di sini. Saya menggunakan perpustakaan ActionBarSherlock dan ternyata onCreateOptionsMenu ingin Menu berasal dari Android.support.v4.view.Menu dan MenuInflater dari Android.view.MenuInflater, bukan Android.support.v4.view.MenuInflater. Jangan tanya kenapa. Saya tidak tahu apakah ini akan memperbaiki semua orang, jadi saya akan membagikan bagaimana saya mengetahuinya:

Klik kanan ruang kosong tempat Anda menginginkan metode berada di Elcipse> Sumber> Overide/Terapkan metode ...

Kemudian temukan dari sini, dan Eclipse akan secara otomatis mengimpor hal-hal yang benar.

47
Weston

Saya memiliki masalah serupa menggunakan SherlockActionBar pada aktivitas saya. Inilah pengaturan saya yang memperbaiki masalah:

import com.actionbarsherlock.app.SherlockActivity;
import com.actionbarsherlock.view.Menu;

public class LoginActivity extends SherlockActivity {

...
@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getSupportMenuInflater().inflate(R.menu.activity_login, menu);
        return true;
    }

...


}
26
Chris Smith

Punya masalah yang sama, tapi itu karena saya menggunakan metode onCreateOptionsMenu yang salah di Fragmen saya!

boolean onCreateOptionsMenu (Menu menu) hanya untuk Aktivitas.

@Override //For Activities
public boolean onCreateOptionsMenu(Menu menu) { 
...

Harus memindahkannya ke kelas aktivitas yang berisi Fragmen.

Fragmen memiliki sendiri: void onCreateOptionsMenu (Menu menu, MenuInflater inflater)

@Override //For Fragments.
public void onCreateOptionsMenu (Menu menu, MenuInflater inflater){
...

Membuat Menu Opsi: http://developer.Android.com/guide/topics/ui/menus.html

16
TouchBoarder

Aduh!!! Itu bagus!

Saya mengimpor Android.view.Menu di MyFragment, bukan Android.support.v4.Menu!

Saya kehilangan beberapa jam untuk yang ini! Semoga postingan ini setidaknya dapat membantu orang lain.

7
Waza_Be

Coba ini, sebenarnya IDE bingung dengan impor menu asli dan impor Sherlock..jadi jika kita tentukan dengan jelas maka akan diselesaikan .. 

@Override
    public void onCreateOptionsMenu(com.actionbarsherlock.view.Menu menu,
            com.actionbarsherlock.view.MenuInflater inflater) {

}

@Override
    public boolean onOptionsItemSelected(
            com.actionbarsherlock.view.MenuItem item) {
        // TODO Auto-generated method stub

}
2
Bala Vishnu
@Override
public boolean onCreateOptionsMenu(com.actionbarsherlock.view.Menu menu) {
    // TODO Auto-generated method stub
    getSupportMenuInflater().inflate(R.menu.main, menu);
    return true;
}
1
RZMars

Baru saja mengalami masalah yang sama dalam suatu kegiatan di Xamarin . Itu mengharapkan metode untuk mengambil Xamarin. ActionbarSherlockBinding.Views.IMenu sebagai argumen.

Cara mengetahuinya: - Berkomentar dengan metode OnCreateOptionsMenu Anda mulai menerapkan .- Dalam beberapa metode kerja, mulailah mengetik OnCreateOptionsMenu seperti Anda ingin menyebutnya .- Pilih dari daftar saran . -Tempatkan kursor pada panggilan OnCreateOptionsMenu .- tekan Command + d untuk pergi ke browser Majelis. Anda akan melihat antarmuka dari implementasi .- Kemudian dengan menekan pointer mouse pada tipe parameter yang diperlukan, Anda akan sampai ke antarmuka implementasi jenis ini .- Dan Anda akan melihat namespace tempatnya.

0
EdgarK

Saya memiliki masalah yang sama dan ini yang saya lakukan untuk menggunakan onCreateOptionsMenu of Fragment . Timpa metode onCreate dari Fragment dan pastikan Anda menggunakan metode setHasOptionsMenu dengan nilai parameter "true" untuk membiarkan sistem tahu Fragment akan menggunakan OptionsMenu.

@Override
public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setHasOptionsMenu(true);
}

Kemudian timpa onCreateOptionsMenu untuk mengembang file menu xml Anda (di sini dalam contoh ini saya mengembang fragmentmenu.xml

@Override
public void onCreateOptionsMenu (Menu menu, MenuInflater inflater) {
     inflater.inflate(R.menu.fragmentmenu, menu);
}
0
Debashis