2016-12-02 2 views
0

Ich versuche, einen Toast anzuzeigen, wann immer der Bildschirm entsperrt ist. Aber es zeigt leere Toast (auch wenn ich etwas Text in EditText eingeben). Was soll ich machen?Kein Text in 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

Kommentare sind nicht für längere Diskussion; Diese Konversation wurde [in den Chat verschoben] (http://chat.stackoverflow.com/rooms/129751/discussion-on-question-by-rayan-a-am-trying-to-display-a-toast- when- the-scre). –

+0

Ich verstehe, dass der Prozess möglicherweise getötet wird, aber nach dem Artikel startet die Anwendung neu wie zuvor. – rayan

Antwort

1

Ich machte einige Fehler, weil von denen der Toast keinen Text anzeigte. (Ich war neu für Android-Programmierung zu diesem Zeitpunkt)

Welche Fehler habe ich machen

  • Ich habe Shared Preferences nicht verwendet, um meine Daten zu speichern.
  • Da mein Empfänger dynamisch registriert wurde. Der Toast wurde nur während der App oder im Hintergrund angezeigt.
  • Nachdem ich den Text innerhalb der EditText eingegeben habe, schloss ich meine Anwendung und entfernte sie aus der aktuellen App. Dann öffnete ich die Anwendung wieder , die eine neue Instanz davon erstellt und die Daten, die ich dachte, wäre dort nicht wirklich und es gab keinen Text in den Toast.

Ich möchte auch Onik für seine Geduld und Hilfe danken.