我想向我的应用程序添加一个Toast消息,但似乎存在一些冲突,或者我可能做错了。
出于测试目的,我已在多个活动中发布了以下代码。
Toast test = Toast.makeText(ShareEventActivity.this, "Link has been copied!",
Toast.LENGTH_LONG);
test.show();
Toast.makeText(getApplicationContext(),"Application Context",Toast.LENGTH_LONG).show();
Toast.makeText(getBaseContext(),"Base Context",Toast.LENGTH_LONG).show();
Toast.makeText(this,"this",Toast.LENGTH_LONG).show();
这在我的应用程序的任何部分都不起作用。它没有显示错误消息或警告。
我似乎无法弄清楚发生了什么,并且没有在网上找到任何东西。 我唯一能想到的可能是第三方图书馆正在发生冲突。
compile 'com.google.firebase:firebase-database:10.0.1'
compile 'com.android.support:appcompat-v7:25.1.0'
compile 'com.android.support:design:25.1.0'
compile 'com.android.support:support-v4:25.1.0'
compile 'com.facebook.android:facebook-android-sdk:4.16.1'
compile 'com.google.firebase:firebase-core:10.0.1'
compile 'com.google.firebase:firebase-database:10.0.1'
compile 'com.google.firebase:firebase-auth:10.0.1'
compile 'com.android.support:gridlayout-v7:25.1.0'
compile 'com.github.ittianyu:BottomNavigationViewEx:1.1.1'
compile 'com.firebaseui:firebase-ui-database:1.0.1'
compile 'com.google.android.gms:play-services:10.0.1'
compile 'com.squareup.picasso:picasso:2.5.2'
compile 'com.android.support:multidex:1.0.1'
compile 'com.google.maps.android:android-maps-utils:0.4+'
compile 'jp.wasabeef:recyclerview-animators:2.2.5'
compile 'org.droidparts:droidparts:2.9.8'
使用的主题:
<style name="CustomTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<!--<item name="colorPrimary">@color/colorPrimary</item>-->
<!--<item name="colorPrimaryDark">@color/colorPrimaryDark</item>-->
<!--<item name="colorAccent">@color/colorAccent</item>-->
<item name="android:actionBarStyle">@style/MyActionBar</item>
<!-- Support library compatibility -->
<item name="actionBarStyle">@style/MyActionBar</item>
</style>
欢迎任何建议。
答案 0 :(得分:0)
据我所知,您必须使用活动来获取吐司的背景。我使用片段作为Toast的上下文时遇到了同样的问题。
我现在的方法是使用静态newInstance方法将对我的主要活动的弱引用传递给片段来创建我的片段。
然后在片段中的newInstance方法中设置弱引用的值:
public class MyFragment extends Fragment {
private WeakReference<MainActivity> mWeakRefActivity;
public static MyFragment newInstance(MainActivity activity, ...) {
mWeakRefActivity = new WeakReference<MainActivity>(activity);
... // pass any other args or a a bundle to fragment here
}
Toast.makeText(mWeakRefActivity.get().getApplicationContext(), ...);
然后在你的toast call中使用弱引用来获取上下文
您也不必创建一个使用Toast的对象 - 只需直接调用Toast.makeText而无需创建对象。代码越少越好。
但你所展示的应该是有用的 - 没有看到周围的代码就不可能再说了。