2016-12-02 2 views
0

Я пытаюсь показать тост всякий раз, когда экран разблокирован. Но он показывает пустой тост (даже когда я ввожу текст в EditText). Что мне делать?Нет текста в Toast

package com.example.hpi5.myapplication; 

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.widget.Button; 
import android.widget.EditText; 
import android.content.Intent; 
import android.content.IntentFilter; 
import android.view.View; 
import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.widget.Toast; 

public class MainActivity extends AppCompatActivity { 

    Button button = null; 
    MyReceiver receiver = null; 
    EditText editText = null; 
    String text; 

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

     receiver = new MyReceiver(); 

     editText = (EditText) findViewById(R.id.editText); 
     text = editText.getText().toString(); 

     button = (Button) findViewById(R.id.button); 
     button.setOnClickListener(new View.OnClickListener() 
     { 
      @Override 
      public void onClick(View v) 
      { 
       Intent intent = new Intent(); 
       intent.setAction("my.action.string"); 
       intent.putExtra("str",text); 
       sendBroadcast(intent); 
      } 
     }); 

     IntentFilter filter = new IntentFilter(); 
     filter.addAction(Intent.ACTION_USER_PRESENT); 
     filter.addAction("my.action.string"); 
     this.registerReceiver(receiver, filter); 
    } 

    public class MyReceiver extends BroadcastReceiver 
    { 
     private String te ; 
     @Override 
     public void onReceive(Context context, Intent intent) 
     { 
      if (intent.getAction().equals("my.action.string")) { 
       te = intent.getExtras().getString("str"); 
      } 

      if (intent.getAction().equals(Intent.ACTION_USER_PRESENT)) { 
       Toast.makeText(context,te , Toast.LENGTH_LONG).show(); 
      } 

     } 
    } 

    @Override 
    protected void onDestroy() 
    { 
     if(receiver!=null) 
      this.unregisterReceiver(receiver); 
    } 
} 
+0

Комментарии для расширенного обсуждения; этот разговор был [перемещен в чат] (http://chat.stackoverflow.com/rooms/129751/discussion-on-question-by-rayan-i-am-trying-to-display-a-toast-whenever- заместитель Scre). –

+0

Я понимаю, что процесс может быть убит, но, согласно статье, приложение перезагружается, как было раньше. – rayan

ответ

1

Я сделал несколько ошибок, из-за которых тост не показывал никакого текста. (Я был новым для андроида программирования на тот момент времени)

Какие ошибки я сделал

  • Я не использовал Shared Preferences для хранения моих данных.
  • Поскольку мой ресивер был динамически зарегистрирован. Тост отображался только во время работы приложения или в фоновом режиме.
  • После того, как я ввел текст внутри EditText, я закрыл приложение и удалил его из недавнего приложения. Затем я снова открыл приложение , которое создало новый экземпляр, и данные, которые, как я думал, были там, на самом деле отсутствовали, и в тосте не было текста.

Я также хотел бы поблагодарить Оник за его терпение и помощь.