4

スナックバーは、画面の下部に短いメッセージを表示することで、操作に関する簡単なフィードバックを提供します。スナックバーにはアクションを含めることができます。

Android には、主にシステム メッセージングに使用されるトーストも用意されています。トーストはスナックバーに似ていますが、アクションがなく、画面からスワイプすることはできません。

私の質問

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;
public class TestReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(final Context context, final Intent intent) {
        Toast.makeText(context, "status", Toast.LENGTH_LONG).show();
    }
}

Snackbara BroadcastReceiverlikeで aを表示することは可能Toastですか?

4

4 に答える 4

7

Toast のように BroadcastReceiver で snakbars を表示することは可能ですか?

BroadcastReceiverを介してアクティビティまたはフラグメントによって登録された は、アクティビティまたはフラグメントにregisterReceiver()スナックバーを表示するように要求できます。

マニフェスト登録済みBroadcastReceiverには UI がないため、スナックバーを表示する場所がありません。それができることは、インプロセス イベント バス (例: LocalBroadcastManagergreenrobot の EventBus、Square の Otto) にイベントを投稿して、フォアグラウンドにある UI にブロードキャストが受信されたことを知らせることです。UI レイヤーがメッセージを受信すると、そのアクティビティまたはフラグメントはスナックバーを表示できます。イベント バス イベントが取得されなかった場合はNotification、フォールバックとして表示できます (適切な場合)。

于 2015-07-15T11:16:31.900 に答える
5

私の作業コード....

public abstract  class TestReceiver  extends BroadcastReceiver {
    @Override   
    public void onReceive(final Context context, final Intent intent) {
        onNetworkChange();
    } 

    protected abstract void onNetworkChange();
}

主な活動中

public class MainActivity extends Activity  {

    public void onCreate() {
        ...  mReceiver = new TestReceiver () {
            @Override
            protected void onNetworkChange() {
            snackbar = Snackbar.make(Clayout, "Please check your internet connection and try again", Snackbar.LENGTH_SHORT);
            snackbar.setAction("X", snackbarClickListener);snackbar.setActionTextColor(Color.GREEN);
            ColoredSnackbar coloredsnakbar=new ColoredSnackbar();
            coloredsnakbar.confirm(snackbar).show();
            }
        };      
    }
}
于 2015-07-21T06:28:13.080 に答える