Невозможно использовать тост на Samsung A5 (2016) - PullRequest
0 голосов
/ 13 января 2019

В прошлый раз я работал над тем же проектом и смог использовать тосты. Но сегодня, когда я пытаюсь использовать тост, ничего не показывает. Я старался изо всех сил, чтобы решить эту проблему, но не удалось.

Это то, что я выполняю [ОБНОВЛЕНО].

package com.azeem.abubakar.dbm;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;


public class MainActivity extends AppCompatActivity {

    private Button btn_start;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // Initialization
        btn_start = (Button) findViewById(R.id.btn_start);

        //Click Listener for Start Button
        btn_start.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View tView) {

                Log.d("[INFO]", "Just Above Toast!");
                Toast.makeText(MainActivity.this, "Start button Clicked", Toast.LENGTH_SHORT).show();
                Log.d("[INFO]", "Just Below Toast!");

            }
        });

    }
}

Вот что показывает Logcat, когда я нажимаю кнопку Пуск.

01-13 19:28:36.473 26670-26670/com.azeem.abubakar.dbm D/ViewRootImpl@ede0223[MainActivity]: ViewPostImeInputStage processPointer 0
01-13 19:28:36.474 26670-26670/com.azeem.abubakar.dbm W/System: ClassLoader referenced unknown path: /system/framework/QPerformance.jar
01-13 19:28:36.476 26670-26670/com.azeem.abubakar.dbm E/BoostFramework: BoostFramework() : Exception_1 = java.lang.ClassNotFoundException: Didn't find class "com.qualcomm.qti.Performance" on path: DexPathList[[],nativeLibraryDirectories=[/system/lib, /vendor/lib]]
01-13 19:28:36.538 26670-26670/com.azeem.abubakar.dbm D/ViewRootImpl@ede0223[MainActivity]: ViewPostImeInputStage processPointer 1
01-13 19:28:36.543 26670-26670/com.azeem.abubakar.dbm D/[INFO]: Just Above Toast!
01-13 19:28:36.552 26670-26670/com.azeem.abubakar.dbm D/TextView: setTypeface with style : 0
01-13 19:28:36.560 26670-26670/com.azeem.abubakar.dbm D/[INFO]: Just Below Toast!
01-13 19:28:36.565 26670-26670/com.azeem.abubakar.dbm D/ViewRootImpl@3da3450[Toast]: ThreadedRenderer.create() translucent=true
01-13 19:28:36.571 26670-26670/com.azeem.abubakar.dbm D/InputTransport: Input channel constructed: fd=82
01-13 19:28:36.571 26670-26670/com.azeem.abubakar.dbm D/ViewRootImpl@3da3450[Toast]: setView = android.widget.LinearLayout{5b8d649 V.E...... ......I. 0,0-0,0} touchMode=true
01-13 19:28:36.572 26670-26670/com.azeem.abubakar.dbm D/ViewRootImpl@3da3450[Toast]: dispatchAttachedToWindow
01-13 19:28:36.593 26670-26670/com.azeem.abubakar.dbm D/ViewRootImpl@3da3450[Toast]: Relayout returned: oldFrame=[0,0][0,0] newFrame=[277,1596][802,1728] result=0x27 surface={isValid=true -750856192} surfaceGenerationChanged=true
    mHardwareRenderer.initialize() mSurface={isValid=true -750856192} hwInitialized=true
01-13 19:28:36.594 26670-26713/com.azeem.abubakar.dbm D/mali_winsys: EGLint new_window_surface(egl_winsys_display*, void*, EGLSurface, EGLConfig, egl_winsys_surface**, egl_color_buffer_format*, EGLBoolean) returns 0x3000,  [525x132]-format:1
01-13 19:28:36.631 26670-26670/com.azeem.abubakar.dbm D/ViewRootImpl@3da3450[Toast]: MSG_RESIZED_REPORT: frame=Rect(277, 1596 - 802, 1728) ci=Rect(0, 0 - 0, 0) vi=Rect(0, 0 - 0, 0) or=1
01-13 19:28:38.565 26670-26670/com.azeem.abubakar.dbm D/ViewRootImpl@3da3450[Toast]: mHardwareRenderer.destroy()#4
01-13 19:28:38.582 26670-26670/com.azeem.abubakar.dbm D/ViewRootImpl@3da3450[Toast]: dispatchDetachedFromWindow
01-13 19:28:38.591 26670-26670/com.azeem.abubakar.dbm D/InputTransport: Input channel destroyed: fd=82

Пожалуйста, помогите мне. Спасибо.

UPDATE:

Уведомление включено для этого приложения в настройках.

Но Тост не показывается. Что я понял, это может быть проблема, связанная с устройством, пожалуйста, исправьте меня, если я ошибаюсь. Причина, по которой я сказал, что это проблема, связанная с устройством, заключается в том, что в прошлый раз, когда я использовал Toasts, все работало, но после того, как я установил обновление безопасности в моем устройстве Samsung Galaxy, всплывающее окно не отображалось вообще.

Моя мобильная модель - Samsung A5 (2016). Пожалуйста, посмотрите на приложенные скриншоты для информации о программном обеспечении. Software Information(1/2) Software Information(2/2)

Ответы [ 5 ]

0 голосов
/ 15 января 2019

попытаться инициализировать контекст в oncreate и передать этот контекст при отображении кода, это может сработать

0 голосов
/ 13 января 2019

1- Пожалуйста, убедитесь, что вы пытаетесь показать тост в главной теме ?? если нет, попробуйте этот код

((MainActivity)context).runOnUiThread(new Runnable() {
    public void run() {
           Toast.makeText(MainActivity.this, "Enter Valid File Name!!", Toast.LENGTH_SHORT).show();

    }
});

2- Во-вторых, попробуйте использовать YourActivith.this вместо getBaseContext ()

3- Иногда, когда клавиатура открыта, тост виден, но за вашей мягкой клавиатурой сначала попробуйте закрыть клавиатуру, а затем посмотрите.

Надеюсь, что кто-нибудь из вас поможет!

0 голосов
/ 13 января 2019

Попробуйте изменить это:

getBaseContext()

до getApplicationContext() или getApplication() или this или MainActivity.this (android java page.this).

Exaple:

Toast.makeText(getApplicationContext(), "Enter Valid File Name!!", Toast.LENGTH_SHORT).show();

Обязательно используйте этот метод onTextChanged:

 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    EditText edtxt_fileName = findViewById(R.id.edtxt_fileName);
    edtxt_fileName.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            String fileName = s.toString();
            if (fileName.equals("")) {
                Log.d("[INFO]", "Just Above Toast!");
                Toast.makeText(getApplicationContext(), "Enter Valid File Name!!", Toast.LENGTH_SHORT).show();
                Log.d("[INFO]", "Just Below Toast!");
            }
            else{   // to show every text change 
                Toast.makeText(getApplicationContext(), "Text: " + fileName, Toast.LENGTH_SHORT).show();   
            }
        }

        @Override
        public void afterTextChanged(Editable s) {

        }
    });
0 голосов
/ 13 января 2019

Попробуйте изменить это:

 Toast.makeText(getBaseContext(), "Enter Valid File Name!!", Toast.LENGTH_SHORT).show();

В:

 Toast.makeText(getApplicationContext(), "Enter Valid File Name!!", Toast.LENGTH_SHORT).show();
0 голосов
/ 13 января 2019

Попробуйте getApplicationContext() вместо getBaseContext(). Перейдите по этой ссылке, чтобы узнать, где использовать какой контекст.
разница и когда использовать getApplication (), getApplicationContext (), getBaseContext () и someClass.this

...