标签: android-toast

如何使用Toast警告用户OkHttp请求返回200以外的其他内容?

我正在使用OkHttp并且一切正常,但是,我想考虑DNS解析关闭,服务器关闭,速度缓慢或只是返回HTTP状态代码200之外的其他情况.我试过了使用Toast,但我不能,因为这是在另一个线程(?)上完成的.我如何克服这个障碍并为用户提供更好的体验?这是我的代码:

private void getBinary(String text) throws Exception {
    OkHttpClient client = new OkHttpClient();

    String body = URLEncoder.encode(text, "utf-8");
    // Encrypt
    MCrypt mcrypt = new MCrypt();
    String encrypted = MCrypt.bytesToHex(mcrypt.encrypt(body));
    Request request = new Request.Builder()
        .url("http://mysite/my_api.php")
        .post(RequestBody.create(MediaType.parse("text/plain"), encrypted))
        .addHeader("User-Agent", System.getProperty("http.agent"))
        .build();

    client.newCall(request).enqueue(new Callback() {

        @Override
        public void onResponse(Response response) throws IOException, RuntimeException {
            if (response.code() != 200){
                Toast.makeText(getSherlockActivity(), "Fail", Toast.LENGTH_LONG).show();
                return;
            }
            saveResponseToFile(response);
        }

        @Override
        public void onFailure(Request arg0, IOException arg1) {
            Toast.makeText(getSherlockActivity(), "Bigger fail", Toast.LENGTH_LONG).show();
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

这是崩溃:

FATAL …
Run Code Online (Sandbox Code Playgroud)

android okhttp android-toast

9
推荐指数
1
解决办法
4043
查看次数

Toast:"this"和"getApplicationContext()"之间的区别?

我的设备运行Android 5.1.1,我发现如果我使用

Toast.makeText(this, "This is a toast", Toast.LENGTH_SHORT).show();
Run Code Online (Sandbox Code Playgroud)

我懂了:

但如果我用getApplicationContext()而不是this,

Toast.makeText(getApplicationContext(), "This is a toast", Toast.LENGTH_SHORT).show();
Run Code Online (Sandbox Code Playgroud)

我懂了:

长方形吐司

两者都是直接从活动中调用的.

为什么是这样?

android android-context android-toast android-5.1.1-lollipop

9
推荐指数
1
解决办法
593
查看次数

从Fragment调用时,Anko toast()方法会导致java.lang.NoSuchMethodError

当我从Android片段调用toast("Toast的消息文本")时,我遇到了以下错误:

java.lang.NoSuchMethodError:没有虚方法getActivity()Landroid/app/Activity; 在课堂上Landroid/support/v4/app/Fragment; 或其超类('android.support.v4.app.Fragment'的声明出现在name-of-the-files-classes.dex中)

我正在使用Anko v0.9.1和Kotlin 1.0.6

可能是造成这次事故的原因是什么?标准Android Toast工作得很好.toast()函数也可以在Activities中运行.

android toast kotlin android-toast anko

9
推荐指数
1
解决办法
3227
查看次数

方法 setView 已弃用

当我在我的应用程序上做自定义 Toast 时,我注意到 setView 已被弃用。

代码截图

有没有人对此有解决方案?

toast.setView(customView);
Run Code Online (Sandbox Code Playgroud)

java android android-toast

8
推荐指数
1
解决办法
3526
查看次数

一次显示两个Toast消息?

我希望一个Toast消息显示在一个位置,另一个Toast消息同时显示在另一个位置.

  1. 多个Toast消息似乎总是按顺序排队和显示.是否可以同时显示两条消息?

  2. 是否有一种解决方法,至少提供该外观,并不涉及搞乱活动布局?

编辑:似乎第一个问题的答案是否定的,这是不可能的.解决方法怎么样?对我来说,一个解决方案包括像Toast一样出现在应用程序之上的东西,并且不会干扰用户与应用程序的交互(因此,不是AlertDialogue或任何调用onPause()等的东西).

android toast android-toast

7
推荐指数
1
解决办法
7060
查看次数

IllegalStateException:视图已添加到窗口管理器中

我花了好几个小时试图修复应用程序崩溃,我认为值得一个问题:

例外情况:

java.lang.IllegalStateException: View android.widget.LinearLayout{41a97eb8 V.E..... ......ID 0,0-540,105 #7f0b020d app:id/toast_layout_root} has already been added to the window manager.
   at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:223)
   at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69)
   at android.widget.Toast$TN.handleShow(Toast.java:402)
   at android.widget.Toast$TN$1.run(Toast.java:310)
   at android.os.Handler.handleCallback(Handler.java:730)
   at android.os.Handler.dispatchMessage(Handler.java:92)
   at android.os.Looper.loop(Looper.java:137)
   at android.app.ActivityThread.main(ActivityThread.java:5136)
   at java.lang.reflect.Method.invokeNative(Method.java)
   at java.lang.reflect.Method.invoke(Method.java:525)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
   at dalvik.system.NativeStart.main(NativeStart.java)
Run Code Online (Sandbox Code Playgroud)

代码:

我有一个跟随本指南的自定义吐司

我定义了自定义toast as ToastMessageBar.java,构造函数如下所示:

public ToastMessageBar(Activity activity) {
    LayoutInflater inflater = activity.getLayoutInflater;
    mToastLayout = inflater.inflate(R.layout.toast_layout,
            (ViewGroup) activity.findViewById(R.id.toast_layout_root));

    mMessageView = (TextView) mToastLayout.findViewById(R.id.toast_message);
    mSubtitleView = (TextView) mToastLayout.findViewById(R.id.toast_subtitle);
}
Run Code Online (Sandbox Code Playgroud)

我显示祝酒词的方式如下:

private void showMessage(MessageType type, String …
Run Code Online (Sandbox Code Playgroud)

android android-toast

7
推荐指数
1
解决办法
9898
查看次数

在Android中使用Toast的上下文?

我刚学会了我可以使用:

Toast.makeText(MainActivity.this, R.string.some_string,Toast.LENGTH_SHORT).show();
Run Code Online (Sandbox Code Playgroud)

要么,

Toast.makeText(getApplicationContext(), R.string.some_string,Toast.LENGTH_SHORT).show();
Run Code Online (Sandbox Code Playgroud)

在Android中显示Toast.

之前我认为上下文实际上是父窗口的一种句柄,应该显示它,但文档不清楚这一点.

然后我遇到了这张桌子: 在此输入图像描述

它似乎也没有提到准确用于Toast的上下文?

编辑:

像Toast这样的子窗口的上下文是"父窗口的句柄"吗?或者它实际上允许Toast.makeText访问资源或什么?

如果上下文无关紧要,为什么要使用呢?

android android-context android-toast

7
推荐指数
1
解决办法
3453
查看次数

Toast.makeText 未在 Android 11 中显示(使用 SDK 30 模拟器)

根据https://developer.android.com/about/versions/11/behavior-changes-11#toasts,Toasts 应该仍然可以正常用于 Android11(仅 setView() 已弃用)。

请注意,仍然允许文本吐司;这些是使用不调用 setView() 的 Toast.makeText() 创建的吐司。

但是,我无法为运行 SDK30 的模拟器显示 Toast

    compileSdkVersion 30
    buildToolsVersion "30.0.3" 
    and with targetSdkVersion 30 
    
Run Code Online (Sandbox Code Playgroud)

使用的代码只是一个简单的

    Toast.makeText(getApplicationContext(), "HELLO WORLD", Toast.LENGTH_SHORT).show();
Run Code Online (Sandbox Code Playgroud)

当我将 targetSdk 更改为 29(或设备 <SDK30)时,会显示吐司。

我是否需要在清单文件中为 Toast 添加任何 <queries> 标签? https://developer.android.com/about/versions/11/privacy/package-visibility

我也试过以下没有运气。

  1. 重新启动模拟器Toast 未在 Android Q 中显示
  2. 通知 ON Toast 消息未显示

android android-toast

7
推荐指数
1
解决办法
1443
查看次数

如何在Toast中心android设置文本新行

我的Toast有3行,我想要第2行和第3行显示这个吐司的中心,并将持续时间设置为10秒.

怎么办?

喜欢这张图片:

在此输入图像描述

duration center android-toast

6
推荐指数
2
解决办法
7769
查看次数

错误“无法使用提供的参数调用以下任何函数:”与 Toast

我想创建一个代码来点击 RecyclerView 的项目。我从互联网上找到了一个,但是它不断收到此错误:

不能使用提供的参数调用以下函数:

public open fun makeText(p0: Context!, p1: CharSequence!, p2: Int): Toast! 在 android.widget.Toast 中定义

public open fun makeText(p0: Context!, p1: Int, p2: Int): Toast! 在 android.widget.Toast 中定义

这是我的代码:

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        recyclerView.layoutManager = LinearLayoutManager(this, RecyclerView.VERTICAL, false)
        val users = ArrayList<User>()

        val adapter = CustomAdapter(users)

        recyclerView.adapter = adapter

        recyclerView.addOnItemClickListener(object : OnItemClickListener {
            override fun onItemClicked(position: Int, view: View) {
                Toast.makeText(this, "Clicked on  " + users.get(position).name, Toast.LENGTH_LONG).show()
            }
        })


    }

    interface OnItemClickListener {
        fun onItemClicked(position: …
Run Code Online (Sandbox Code Playgroud)

kotlin android-studio android-toast android-recyclerview

6
推荐指数
2
解决办法
4864
查看次数