您需要使用Theme.AppCompat主题

时间:2016-10-30 21:24:38

标签: java android xml

是的,我知道,这个问题一再发布在这里。但我无法找到解决我具体问题的方法。

每当我尝试制作Snackbar时,我的应用程序都会崩溃

  

你需要使用一个Theme.AppCompat主题(或后代)   设计图书馆。

确定。我知道:没有代码就没有调试,所以:

  

调用以及抛出错误的行:

Snackbar.make(
    new CoordinatorLayout(getApplicationContext()),
    "Logged out.",
    Snackbar.LENGTH_SHORT).show();


  

班级定义:

public class MainActivity extends AppCompatActivity
    implements NavigationView.OnNavigationItemSelectedListener {


  

清单的开头

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity
        android:name=".SplashActivity"
        android:theme="@style/SplashTheme">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name=".MainActivity"
        android:label="@string/app_name"
        android:theme="@style/AppTheme.NoActionBar">
        <intent-filter>
            <action android:name="android.intent.action.SEARCH" />
        </intent-filter>

        <meta-data
            android:name="android.app.searchable"
            android:resource="@xml/searchable" />
    </activity>

哦是的:AppTheme和AppTheme.NoActionbar都是Theme.AppCompat的父母......


如果您需要更多代码,请告诉我。

1 个答案:

答案 0 :(得分:2)

为什么CoordinatorLayout需要getApplicationContext()

您甚至可以使其与new CoordinatorLayout(MainActivity.this)一起使用。 (这使用Activity Context代替Application Context

但你应该保持简单。试试这个:

Snackbar.make(findViewById(android.R.id.content), "Logged out.", Snackbar.LENGTH_SHORT).show();