Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
danilshik
4 / 4 / 2
Регистрация: 04.04.2015
Сообщений: 186
1

Передача переменной из класса в класс

24.05.2017, 14:52. Просмотров 358. Ответов 14
Метки нет (Все метки)

Здравствуйте, что-то туплю, но никак не могу передать переменную из одного класса в другой/
Нужно передать переменную text из класса MyFirebaseMessagingService в класс FirstActivity для надписи кнопки
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
public class MyFirebaseMessagingService extends FirebaseMessagingService {
 
    private static final String TAG = MyFirebaseMessagingService.class.getSimpleName();
 
    private NotificationUtils notificationUtils;
 
    String type,toUser, fromUser, text, order_id, status;
    public void setText(String text){
        this.text=text;
    }
    public String getText(){
        return this.text;
    }
private void handleDataMessage(JSONObject json) {
        Log.e(TAG, "push json: " + json.toString());
 
        try {
            JSONObject data = json.getJSONObject("data");
 
            String title = data.getString("title");
            String message = data.getString("message");
            boolean isBackground = data.getBoolean("is_background");
            String imageUrl = data.getString("image");
            String timestamp = data.getString("timestamp");
            JSONObject payload = data.getJSONObject("payload");
 
            String type=payload.getString("type");
            String toUser=payload.getString("toUser");
            String fromUser=payload.getString("fromUser");
            text=payload.getString("text");
 
            Log.e(TAG, "text: " + text);
 
            String order_id=payload.getString("order_id");
            String status=payload.getString("status");
 
            Log.e(TAG, "title: " + title);
            Log.e(TAG, "message: " + message);
            Log.e(TAG, "isBackground: " + isBackground);
            Log.e(TAG, "payload: " + payload.toString());
            Log.e(TAG, "imageUrl: " + imageUrl);
            Log.e(TAG, "timestamp: " + timestamp);
}
Класс FirstActivity
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class FirstActivity extends AppCompatActivity {
public MyFirebaseMessagingService myFirebaseMessagingService;
 
    public FirstActivity(){
        myFirebaseMessagingService=new MyFirebaseMessagingService();
    }
public void AddRemoveMessageOnLayout(){
       
        LinearLayout.LayoutParams layoutParams=new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT);
        int BtnGravity= Gravity.RIGHT;
        layoutParams.gravity=BtnGravity;
        layoutParams.setMargins(0,0,10,10);
        Button btnNew=new Button(this);
        String removeText=myFirebaseMessagingService.getText();
        btnNew.setText(removeText);
        btnNew.setBackgroundColor(Color.parseColor("#185FFF"));
        linearLayoutMessage.addView(btnNew,layoutParams);
    }
Пишет ошибку при задании кнопки текста
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.05.2017, 14:52
Ответы с готовыми решениями:

Передача значения переменной Activity в другой класс
Есть активность: public class Menu extends Activity { OnClickListener lt; EditText Day,...

Класс: Как получить значение нестатичной переменной из класса One в классе Two?
Java.Есть два класса One и Two. В классе One есть не статичная переменная t. Как получить значение...

Класс: Хочу из класса WorkFiles получить доступ к функционалу класса WorkDB.
Есть 3 класса: MainActivity, WorkDB и WorkFiles. Хочу из класса WorkFiles получить доступ к...

Передача переменной из класса А в класс Б
Добрый день. По какой-то причине не получается получить переменную из другого класса. class A...

Передача значения переменной из метода одного класса в метод другого класса
Добрый вечер! Есть основная форма Form1 в которой есть метод private void button1_Click(object...

14
vxg
Модератор
3281 / 2077 / 328
Регистрация: 13.01.2012
Сообщений: 8,074
24.05.2017, 15:00 2
danilshik, почему в text должно что-то оказаться?
0
danilshik
4 / 4 / 2
Регистрация: 04.04.2015
Сообщений: 186
24.05.2017, 15:06  [ТС] 3
vxg, потому что я получаю его из json. В логе он отображается
0
vxg
Модератор
3281 / 2077 / 328
Регистрация: 13.01.2012
Сообщений: 8,074
24.05.2017, 15:09 4
danilshik, почему вы думаете что оно успеет получить данные до того момента как вы их захотите вывести? я просто не вижу ни начала получения ни начала показа - только процедуры получения и показа
0
ExFau$t
734 / 606 / 150
Регистрация: 08.05.2012
Сообщений: 2,947
24.05.2017, 15:09 5
Ну получил ты его, а дальше что?
0
Pablito
2831 / 2249 / 760
Регистрация: 12.05.2014
Сообщений: 7,852
Завершенные тесты: 1
24.05.2017, 15:14 6
для начала надо строку myFirebaseMessagingService=new MyFirebaseMessagingService();
перенести из конструктора активити в onCreate(), а конструктор вообще удалить
0
danilshik
4 / 4 / 2
Регистрация: 04.04.2015
Сообщений: 186
24.05.2017, 15:24  [ТС] 7
vxg, предполагается что, после строчки
Java
1
text=payload.getString("text");
будет вызываться
Java
1
AddRemoveMessageOnLayout()
Добавлено через 5 минут
Pablito, в Oncreate же только кнопки, textview и т.д описываются не?
0
vxg
Модератор
3281 / 2077 / 328
Регистрация: 13.01.2012
Сообщений: 8,074
24.05.2017, 15:27 8
danilshik,
1 это лишь начало показа
2 и как вы будите вызывать AddRemoveMessageOnLayout?
3 где начало получения данных?
0
danilshik
4 / 4 / 2
Регистрация: 04.04.2015
Сообщений: 186
24.05.2017, 15:47  [ТС] 9
vxg,
Скидываю полностью код класса, в нем не разбираюсь, так как взял со статьи на хабре
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
package com.example.danilshik.kurs5.service;
 
/**
 * Created by Danilshik on 01.05.2017.
 */
import android.content.Context;
import android.content.Intent;
import android.support.v4.content.LocalBroadcastManager;
import android.text.TextUtils;
import android.util.Log;
 
import com.example.danilshik.kurs5.activity.FirstActivity;
import com.example.danilshik.kurs5.app.Config;
import com.example.danilshik.kurs5.util.NotificationUtils;
import com.google.firebase.messaging.FirebaseMessagingService;
import com.google.firebase.messaging.RemoteMessage;
 
import org.json.JSONException;
import org.json.JSONObject;
 
public class MyFirebaseMessagingService extends FirebaseMessagingService {
 
    private static final String TAG = MyFirebaseMessagingService.class.getSimpleName();
 
    private NotificationUtils notificationUtils;
 
    String type,toUser, fromUser, text, order_id, status;
    public void setText(String text){
        this.text=text;
    }
    public String getText(){
        return this.text;
    }
 
 
 
    @Override
    public void onMessageReceived(RemoteMessage remoteMessage) {
        Log.e(TAG, "From: " + remoteMessage.getFrom());
 
        if (remoteMessage == null)
            return;
 
        // Check if message contains a notification payload.
        if (remoteMessage.getNotification() != null) {
            Log.e(TAG, "Notification Body: " + remoteMessage.getNotification().getBody());
            handleNotification(remoteMessage.getNotification().getBody());
        }
 
        // Check if message contains a data payload.
        if (remoteMessage.getData().size() > 0) {
            Log.e(TAG, "Data Payload: " + remoteMessage.getData().toString());
 
            try {
                JSONObject json = new JSONObject(remoteMessage.getData().toString());
                handleDataMessage(json);
            } catch (Exception e) {
                Log.e(TAG, "Exception: " + e.getMessage());
            }
        }
    }
 
    public void handleNotification(String message) {
        if (!NotificationUtils.isAppIsInBackground(getApplicationContext())) {
            // приложение находится на пережнем плане, транслировать the push message
            Intent pushNotification = new Intent(Config.PUSH_NOTIFICATION);
            pushNotification.putExtra("message", message);
            LocalBroadcastManager.getInstance(this).sendBroadcast(pushNotification);
 
            // play notification sound
            NotificationUtils notificationUtils = new NotificationUtils(getApplicationContext());
            notificationUtils.playNotificationSound();
        }else{
            // Если приложение в фоновом режиме, firebase сам обрабатывает the notification
        }
    }
 
    private void handleDataMessage(JSONObject json) {
        Log.e(TAG, "push json: " + json.toString());
 
        try {
            JSONObject data = json.getJSONObject("data");
 
            String title = data.getString("title");
            String message = data.getString("message");
            boolean isBackground = data.getBoolean("is_background");
            String imageUrl = data.getString("image");
            String timestamp = data.getString("timestamp");
            JSONObject payload = data.getJSONObject("payload");
 
            String type=payload.getString("type");
            String toUser=payload.getString("toUser");
            String fromUser=payload.getString("fromUser");
            text=payload.getString("text");           
 
            Log.e(TAG, "text: " + text);
 
            String order_id=payload.getString("order_id");
            String status=payload.getString("status");
 
 
            Log.e(TAG, "title: " + title);
            Log.e(TAG, "message: " + message);
            Log.e(TAG, "isBackground: " + isBackground);
            Log.e(TAG, "payload: " + payload.toString());
            Log.e(TAG, "imageUrl: " + imageUrl);
            Log.e(TAG, "timestamp: " + timestamp);
 
 
            if (!NotificationUtils.isAppIsInBackground(getApplicationContext())) {
                // приложение находится на пережнем плане, транслировать the push message
                Intent pushNotification = new Intent(Config.PUSH_NOTIFICATION);
                pushNotification.putExtra("message", message);
                LocalBroadcastManager.getInstance(this).sendBroadcast(pushNotification);
 
                // play notification sound
                NotificationUtils notificationUtils = new NotificationUtils(getApplicationContext());
                notificationUtils.playNotificationSound();
            } else {
                // Приложение находится в фоновом режиме, показывать уведомление в трее
                Intent resultIntent = new Intent(getApplicationContext(), FirstActivity.class);
                resultIntent.putExtra("message", message);
 
                // Проверка прикрепления изображения
                if (TextUtils.isEmpty(imageUrl)) {
                    showNotificationMessage(getApplicationContext(), title, message, timestamp, resultIntent);
                } else {
                    // Если изображение присутствует, то показываем уведомление с изображением
                    showNotificationMessageWithBigImage(getApplicationContext(), title, message, timestamp, resultIntent, imageUrl);
                }
            }
        } catch (JSONException e) {
            Log.e(TAG, "Json Exception: " + e.getMessage());
        } catch (Exception e) {
            Log.e(TAG, "Exception: " + e.getMessage());
        }
    }
 
    /**
     * Показывать уведомления, только с текстом
     */
    private void showNotificationMessage(Context context, String title, String message, String timeStamp, Intent intent) {
        notificationUtils = new NotificationUtils(context);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
        notificationUtils.showNotificationMessage(title, message, timeStamp, intent);
    }
 
    /**
     *Показывать уведомления с изображение и текстом
     */
    private void showNotificationMessageWithBigImage(Context context, String title, String message, String timeStamp, Intent intent, String imageUrl) {
        notificationUtils = new NotificationUtils(context);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
        notificationUtils.showNotificationMessage(title, message, timeStamp, intent, imageUrl);
    }
}


Добавлено через 3 минуты
У меня при получении данных сразу отображается оповещение, и в layot должна появится кнопка с текстом оповещения
0
vxg
Модератор
3281 / 2077 / 328
Регистрация: 13.01.2012
Сообщений: 8,074
24.05.2017, 16:10 10
danilshik, этот код кидает оповещение. как ваша активити его ловит что бы показать кнопку?
0
danilshik
4 / 4 / 2
Регистрация: 04.04.2015
Сообщений: 186
24.05.2017, 16:52  [ТС] 11
vxg, вот это я и хочу реализовать. Это возможно?
Сейчас приложение работает так: приходят данные, если приложение открыто, то отображаетcя Toast - всплывающее окно. Если окно свернуто, то вверху приходит оповещение. Можно ли сами данные вывести в button, если да, то как?

Добавлено через 21 минуту
vxg,
Класс NotificationUtils
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
public class NotificationUtils {
    private static String TAG = NotificationUtils.class.getSimpleName();
 
    private Context mContext;
 
    public NotificationUtils(Context mContext) {
        this.mContext = mContext;
    }
 
    public void showNotificationMessage(String title, String message, String timeStamp, Intent intent) {
        showNotificationMessage(title, message, timeStamp, intent, null);
    }
 
    public void showNotificationMessage(final String title, final String message, final String timeStamp, Intent intent, String imageUrl) {
        // проверка на пустоту push уведомления
        if (TextUtils.isEmpty(message))
            return;
 
 
        //  icon уведомления
        final int icon = R.mipmap.ic_launcher;
 
        intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
        final PendingIntent resultPendingIntent =
                PendingIntent.getActivity(
                        mContext,
                        0,
                        intent,
                        PendingIntent.FLAG_CANCEL_CURRENT
                );
 
        final NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(
                mContext);
 
        final Uri alarmSound = Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE
                + "://" + mContext.getPackageName() + "/raw/notification");
 
        if (!TextUtils.isEmpty(imageUrl)) {
 
            if (imageUrl != null && imageUrl.length() > 4 && Patterns.WEB_URL.matcher(imageUrl).matches()) {
 
                Bitmap bitmap = getBitmapFromURL(imageUrl);
 
                if (bitmap != null) {
                    showBigNotification(bitmap, mBuilder, icon, title, message, timeStamp, resultPendingIntent, alarmSound);
                } else {
                    showSmallNotification(mBuilder, icon, title, message, timeStamp, resultPendingIntent, alarmSound);
                }
            }
        } else {
            showSmallNotification(mBuilder, icon, title, message, timeStamp, resultPendingIntent, alarmSound);
            playNotificationSound();
        }
    }
 
 
    private void showSmallNotification(NotificationCompat.Builder mBuilder, int icon, String title, String message, String timeStamp, PendingIntent resultPendingIntent, Uri alarmSound) {
 
        NotificationCompat.InboxStyle inboxStyle = new NotificationCompat.InboxStyle();
 
        inboxStyle.addLine(message);
 
        Notification notification;
        notification = mBuilder.setSmallIcon(icon).setTicker(title).setWhen(0)
                .setAutoCancel(true)
                .setContentTitle(title)
                .setContentIntent(resultPendingIntent)
                .setSound(alarmSound)
                .setStyle(inboxStyle)
                .setWhen(getTimeMilliSec(timeStamp))
                .setSmallIcon(R.mipmap.ic_launcher)
                .setLargeIcon(BitmapFactory.decodeResource(mContext.getResources(), icon))
                .setContentText(message)
                .build();
 
        NotificationManager notificationManager = (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE);
        notificationManager.notify(Config.NOTIFICATION_ID, notification);
    }
 
    private void showBigNotification(Bitmap bitmap, NotificationCompat.Builder mBuilder, int icon, String title, String message, String timeStamp, PendingIntent resultPendingIntent, Uri alarmSound) {
        NotificationCompat.BigPictureStyle bigPictureStyle = new NotificationCompat.BigPictureStyle();
        bigPictureStyle.setBigContentTitle(title);
        bigPictureStyle.setSummaryText(Html.fromHtml(message).toString());
        bigPictureStyle.bigPicture(bitmap);
        Notification notification;
        notification = mBuilder.setSmallIcon(icon).setTicker(title).setWhen(0)
                .setAutoCancel(true)
                .setContentTitle(title)
                .setContentIntent(resultPendingIntent)
                .setSound(alarmSound)
                .setStyle(bigPictureStyle)
                .setWhen(getTimeMilliSec(timeStamp))
                .setSmallIcon(R.mipmap.ic_launcher)
                .setLargeIcon(BitmapFactory.decodeResource(mContext.getResources(), icon))
                .setContentText(message)
                .build();
 
        NotificationManager notificationManager = (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE);
        notificationManager.notify(Config.NOTIFICATION_ID_BIG_IMAGE, notification);
    }
 
    /**
     * Скачивание Push уведомления - изображения, перед выводом его в лоток уведомлений
 
     */
    public Bitmap getBitmapFromURL(String strURL) {
        try {
            URL url = new URL(strURL);
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.setDoInput(true);
            connection.connect();
            InputStream input = connection.getInputStream();
            Bitmap myBitmap = BitmapFactory.decodeStream(input);
            return myBitmap;
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }
    }
 
    // Проигрывание Mp3 уведомления
    public void playNotificationSound() {
        try {
            Uri alarmSound = Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE
                    + "://" + mContext.getPackageName() + "/raw/notification");
            Ringtone r = RingtoneManager.getRingtone(mContext, alarmSound);
            r.play();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
 
    /**
     * Метод проверяет, находится ли приложение в фоновом режиме или нет
     */
    public static boolean isAppIsInBackground(Context context) {
        boolean isInBackground = true;
        ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
        if (Build.VERSION.SDK_INT > Build.VERSION_CODES.KITKAT_WATCH) {
            List<ActivityManager.RunningAppProcessInfo> runningProcesses = am.getRunningAppProcesses();
            for (ActivityManager.RunningAppProcessInfo processInfo : runningProcesses) {
                if (processInfo.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND) {
                    for (String activeProcess : processInfo.pkgList) {
                        if (activeProcess.equals(context.getPackageName())) {
                            isInBackground = false;
                        }
                    }
                }
            }
        } else {
            List<ActivityManager.RunningTaskInfo> taskInfo = am.getRunningTasks(1);
            ComponentName componentInfo = taskInfo.get(0).topActivity;
            if (componentInfo.getPackageName().equals(context.getPackageName())) {
                isInBackground = false;
            }
        }
 
        return isInBackground;
    }
 
    // Очищает лоток уведомлений
    public static void clearNotifications(Context context) {
        NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
        notificationManager.cancelAll();
    }
 
    public static long getTimeMilliSec(String timeStamp) {
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        try {
            Date date = format.parse(timeStamp);
            return date.getTime();
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return 0;
    }
}
0
vxg
Модератор
3281 / 2077 / 328
Регистрация: 13.01.2012
Сообщений: 8,074
24.05.2017, 16:53 12
danilshik, можно например так (уверен что есть модные способы в 1001 раз лучше)
в FirstActivity делаем ресивер
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
    public class MyUpdateReceiver extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            updateUi();
        }
    }
...
    private MyUpdateReceiver myUpdateReceiver;

регистрируем его в onResume
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
    @Override
    protected void onResume () {
        super.onResume();
 
        IntentFilter filter = new IntentFilter("MyUpdateReceiver");
        myUpdateReceiver = new MyUpdateReceiver();
        registerReceiver(myUpdateReceiver, filter);
...
        updateUi();
    }

убираем регистрацию в onPause
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
    @Override
    protected void onPause () {
        super.onPause();
 
        if (myUpdateReceiver != null) {
            unregisterReceiver(myUpdateReceiver);
            myUpdateReceiver = null;
        }
    }

из процедуры приема сообщения кидаем бродкаст который словит наш ресивер
Кликните здесь для просмотра всего текста
Java
1
2
3
                    Intent i = new Intent();
                    i.setAction("MyUpdateReceiver");
                    ctx.sendBroadcast(i);
0
danilshik
4 / 4 / 2
Регистрация: 04.04.2015
Сообщений: 186
24.05.2017, 17:09  [ТС] 13
vxg, что такое updateUi()? (может что то импортировать нужно?)
код после твоего редактирования
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
public class FirstActivity extends AppCompatActivity {
 
    private static final String TAG = FirstActivity.class.getSimpleName();
    private BroadcastReceiver mRegistrationBroadcastReceiver;
    private TextView txtRegId, txtMessage;
    String text,order_id,fromFirebaseId,type,status,toUser, fromUser;
    EditText ET_ORDER_ID, ET_MESSAGES;
    private MyUpdateReceiver myUpdateReceiver;
 
    EditText message;
    Button buttonMessage;
    TextView textView2, textView3;
    LinearLayout linearLayoutMessage;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_first);
        MyFirebaseMessagingService myFirebaseMessagingService;
 
        message = (EditText) findViewById(R.id.message);
        buttonMessage = (Button)findViewById(R.id.ButtonMessage);
 
        txtRegId = (TextView) findViewById(R.id.txt_reg_id);
        txtMessage = (TextView) findViewById(R.id.txt_push_message);
 
        ET_ORDER_ID=(EditText) findViewById(R.id.new_order);
        ET_MESSAGES=(EditText) findViewById(R.id.new_messages);
        linearLayoutMessage=(LinearLayout)findViewById(R.id.linearLayoutMessages);
 
 
 
 
        mRegistrationBroadcastReceiver = new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
 
                // checking for type intent filter
                if (intent.getAction().equals(Config.REGISTRATION_COMPLETE)) {
                    // gcm successfully registered
                    // now subscribe to `global` topic to receive app wide notifications
                    FirebaseMessaging.getInstance().subscribeToTopic(Config.TOPIC_GLOBAL);
 
                    displayFirebaseRegId();
 
                } else if (intent.getAction().equals(Config.PUSH_NOTIFICATION)) {
                    // new push notification is received
 
                    String message = intent.getStringExtra("message");
 
                    Toast.makeText(getApplicationContext(), "Push notification: " + message, Toast.LENGTH_LONG).show();
 
                    txtMessage.setText(message);
                }
            }
        };
 
        displayFirebaseRegId();
    }
    public class MyUpdateReceiver extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            updateUi();
        }
    }
    public void userReg(View view){
 
        type="message";
        toUser="Danil";
        fromUser="Denis";
        text=ET_MESSAGES.getText().toString();
 
         order_id=ET_ORDER_ID.getText().toString();
         status="accept";
         fromFirebaseId="f9AopqZ4mKI:APA91bFayy2W8mXf-TqIzdg4IJ4xMGMYW2r_Ppgkd8W7nKQ5MxgKDqkkaS-pHfxHXmH3v-pAXtiZSNSGHb2e2zuznlPyn14so8tcqvkg6Dl5WXm_aHe0qGVGx7Qt3-rj1JG15ji0B-rn";
        AddMessage addMessages=new AddMessage(this);
        addMessages.execute(type, toUser,fromUser,text,order_id,status,fromFirebaseId);
        AddMessageOnLayout();
    }
    public void AddMessageOnLayout(){
        //добавление сообщения в LinearLayout
        LinearLayout.LayoutParams layoutParams=new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT);
        int BtnGravity= Gravity.LEFT;
        layoutParams.gravity=BtnGravity;
        layoutParams.setMargins(10,0,0,10);
        Button btnNew=new Button(this);
        btnNew.setText(text);
        btnNew.setBackgroundColor(Color.parseColor("#ACDAF1"));
        linearLayoutMessage.addView(btnNew,layoutParams);
    }
    public void AddRemoveMessageOnLayout(){
 
        LinearLayout.LayoutParams layoutParams=new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT);
        int BtnGravity= Gravity.RIGHT;
        layoutParams.gravity=BtnGravity;
        layoutParams.setMargins(0,0,10,10);
        Button btnNew=new Button(this);
        //String removeText=myFirebaseMessagingService.getText();
        //btnNew.setText(removeText);
        btnNew.setBackgroundColor(Color.parseColor("#185FFF"));
        linearLayoutMessage.addView(btnNew,layoutParams);
    }
 
 
 
 
 
 
 
    // Получает reg id from shared preferences
    // and displays on the screen
    private void displayFirebaseRegId() {
        SharedPreferences pref = getApplicationContext().getSharedPreferences(Config.SHARED_PREF, 0);
        String regId = pref.getString("regId", null);
 
        Log.e(TAG, "Firebase reg id: " + regId);
 
        if (!TextUtils.isEmpty(regId))
            txtRegId.setText("Firebase Reg Id: " + regId);
        else
            txtRegId.setText("Firebase Reg Id is not received yet!");
    }
 
    @Override
    protected void onResume() {
        super.onResume();
 
        IntentFilter filter = new IntentFilter("MyUpdateReceiver");
        myUpdateReceiver = new MyUpdateReceiver();
        registerReceiver(myUpdateReceiver, filter);
 
        // register GCM registration complete receiver
        LocalBroadcastManager.getInstance(this).registerReceiver(mRegistrationBroadcastReceiver,
                new IntentFilter(Config.REGISTRATION_COMPLETE));
 
        // register получения нового уведомления
        // при этом активность будет уведомлена каждый раз, когда приходит новое сообщение
        LocalBroadcastManager.getInstance(this).registerReceiver(mRegistrationBroadcastReceiver,
                new IntentFilter(Config.PUSH_NOTIFICATION));
/////////////
 
 
        // Очистить область уведомления, когда приложение открыто
        NotificationUtils.clearNotifications(getApplicationContext());
 
        updateUi();
    }
 
    @Override
    protected void onPause() {
        LocalBroadcastManager.getInstance(this).unregisterReceiver(mRegistrationBroadcastReceiver);
        super.onPause();
 
        if (myUpdateReceiver != null) {
            unregisterReceiver(myUpdateReceiver);
            myUpdateReceiver = null;
        }
    }
}

процедура приема это метод handleDataMessage?
0
vxg
Модератор
3281 / 2077 / 328
Регистрация: 13.01.2012
Сообщений: 8,074
24.05.2017, 18:56 14
danilshik, updateUI - это то место где нужно вывести информацию на экран. Кстати, вы не замечаете что мы повторили то что уже есть)?
0
vxg
Модератор
3281 / 2077 / 328
Регистрация: 13.01.2012
Сообщений: 8,074
31.05.2017, 06:46 15
danilshik, ещё раз повторю - то что лежит на активити должно быть доступно лишь ей - нельзя утаскивать это в другое место, если вам хочется это сделать меняйте мышление
0
31.05.2017, 06:46
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.05.2017, 06:46

Передача переменной класса
допустим у меня есть 2 класса App package general { import flash.display.Sprite; import...

Передача переменной в класс
суть передать переменные в методы класса, для начала я передал переменную в основной метод класса ...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru