簡體   English   中英

無法覆蓋 Fragment 中的 onResume() 嘗試分配較弱的訪問權限; 是公開的

[英]Cannot override onResume() in Fragment attempting to assign weaker access privileges; was public

有人可以幫我嗎,我在 android 工作室遇到了這個錯誤:

JournalFragment 中的 onResume() 無法覆蓋 Fragment 中的 onResume() 嘗試分配較弱的訪問權限; 是公開的

下面的代碼是 JournalFragment.java:

公共 class JournalFragment 擴展片段 {

Toolbar toolbar;
RecyclerView recyclerView;
Adapter adapter;
TextView noItemText;
SimpleDatabase simpleDatabase;
Context context;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState)
{
    setHasOptionsMenu(true);
    super.onCreate(savedInstanceState);
    View view=inflater.inflate(R.layout.fragment_journal, container, false);



    toolbar = view.findViewById(R.id.toolbar);
    toolbar.setTitleTextColor(getResources().getColor(R.color.white));
    ((AppCompatActivity)getActivity()).setSupportActionBar(toolbar);
    noItemText = view.findViewById(R.id.noItemText);
    simpleDatabase = new SimpleDatabase(context);
    List<Note> allNotes = simpleDatabase.getAllNotes();
    recyclerView = view.findViewById(R.id.allNotesList);
    context = container.getContext();
    if(allNotes.isEmpty()){
        noItemText.setVisibility(View.VISIBLE);
    }else {
        noItemText.setVisibility(View.GONE);
        displayList(allNotes);
    }
    return view;

}

private void displayList(List<Note> allNotes) {
    recyclerView.setLayoutManager(new LinearLayoutManager(context));
    adapter = new Adapter(context,allNotes);
    recyclerView.setAdapter(adapter);
}

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    // TODO Add your menu entries here
    super.onCreateOptionsMenu(menu, inflater);
    inflater.inflate(R.menu.main_menu,menu);

}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    if(item.getItemId() == R.id.add){
        Toast.makeText(context, "Add New Note", Toast.LENGTH_SHORT).show();
        Intent i = new Intent(getActivity(), AddNote.class);
        startActivity(i);
    }
    return super.onOptionsItemSelected(item);
}

@Override
protected void onResume() {
    super.onResume();
    List<Note> getAllNotes = simpleDatabase.getAllNotes();
    if(getAllNotes.isEmpty()){
        noItemText.setVisibility(View.VISIBLE);
    }else {
        noItemText.setVisibility(View.GONE);
        displayList(getAllNotes);
    }
}

}'

先感謝您!

在 Java inheritance 中,您不能向下更改訪問修飾符。 讓我們看一個例子:你有一個基礎 class,其中一些 function 是公共的,而外部的其他人試圖激活 function。 但是等等,動態類型是您的 class,並且您更改了訪問修飾符,因此外部人員無法使用 function。 用戶體驗到了他沒有預料到的事情,因為他知道他可以使用 function。 這就是 Java 限制這種行為的原因,您的解決方案是將 onResume 改回 public。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM