簡體   English   中英

當我單擊選項項時,Android Snackbar 沒有出現

[英]Android Snackbar not appearing when I click Option Item

每當我單擊我的選項時,我都試圖顯示一個 Snackbar,但是當我這樣做時,我的應用程序崩潰了。 有誰知道這里有什么問題以及可以做些什么來解決這個問題?

在此處輸入圖片說明

爪哇

public class MainActivity extends AppCompatActivity {
    private static CoordinatorLayout coordinatorLayout;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
    }

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

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();

        if (id == R.id.action_settings) {
            Snackbar.make(coordinatorLayout, "Single Line SnackBar Demo.", Snackbar.LENGTH_SHORT).show();
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}

邏輯貓

04-17 09:22:58.260 20108-20108/com.apptacularapps.snackbar E/AndroidRuntime: FATAL EXCEPTION: main
                                                                             Process: com.apptacularapps.snackbar, PID: 20108
                                                                             java.lang.NullPointerException
                                                                                 at android.support.design.widget.Snackbar.<init>(Snackbar.java:183)
                                                                                 at android.support.design.widget.Snackbar.make(Snackbar.java:215)
                                                                                 at com.apptacularapps.snackbar.MainActivity.onOptionsItemSelected(MainActivity.java:49)
                                                                                 at android.app.Activity.onMenuItemSelected(Activity.java:2600)
                                                                                 at android.support.v4.app.FragmentActivity.onMenuItemSelected(FragmentActivity.java:404)
                                                                                 at android.support.v7.app.AppCompatActivity.onMenuItemSelected(AppCompatActivity.java:179)
                                                                                 at android.support.v7.view.WindowCallbackWrapper.onMenuItemSelected(WindowCallbackWrapper.java:100)
                                                                                 at android.support.v7.view.WindowCallbackWrapper.onMenuItemSelected(WindowCallbackWrapper.java:100)
                                                                                 at android.support.v7.app.ToolbarActionBar$2.onMenuItemClick(ToolbarActionBar.java:69)
                                                                                 at android.support.v7.widget.Toolbar$1.onMenuItemClick(Toolbar.java:169)
                                                                                 at android.support.v7.widget.ActionMenuView$MenuBuilderCallback.onMenuItemSelected(ActionMenuView.java:760)
                                                                                 at android.support.v7.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:811)
                                                                                 at android.support.v7.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:152)
                                                                                 at android.support.v7.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:958)
                                                                                 at android.support.v7.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:948)
                                                                                 at android.support.v7.view.menu.MenuPopupHelper.onItemClick(MenuPopupHelper.java:191)
                                                                                 at android.widget.AdapterView.performItemClick(AdapterView.java:299)
                                                                                 at android.widget.AbsListView.performItemClick(AbsListView.java:1113)
                                                                                 at android.widget.AbsListView$PerformClick.run(AbsListView.java:2911)
                                                                                 at android.widget.AbsListView$3.run(AbsListView.java:3645)
                                                                                 at android.os.Handler.handleCallback(Handler.java:733)
                                                                                 at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                                 at android.os.Looper.loop(Looper.java:136)
                                                                                 at android.app.ActivityThread.main(ActivityThread.java:5001)
                                                                                 at java.lang.reflect.Method.invokeNative(Native Method)
                                                                                 at java.lang.reflect.Method.invoke(Method.java:515)
                                                                                 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
                                                                                 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
                                                                                 at dalvik.system.NativeStart.main(Native Method)

您沒有初始化協調器布局。 像這樣初始化它:

coordinatorLayout = (CoordinatorLayout) findViewById(R.id.yourCoordinatorLayoutId);

可能是您的 coordinatorlayout 未在類中初始化或定義。這可能是您獲得Null Pointer 異常的原因。

初始化CoordinatorLayout或通過任何子視圖CoordinatorLayout

IE

coordinatorLayout = (CoordinatorLayout) findViewById(R.id.yourCoordinatorLayoutId);

或者

TextView textView = (TextView) findViewById(R.id.yourTextViewID);

您的TexView駐留在CoordinatorLayout ,然后將此視圖傳遞給您的Snackbar例如:

Snackbar.make(textView, "Single Line SnackBar Demo.", Snackbar.LENGTH_SHORT).show();

暫無
暫無

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

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