2015-01-06 3 views
-1

Он говорит null к моему сообщению, и я хочу взять сообщение, которое пишу из другого класса, возможно ли это? Может ли кто-нибудь помочь узнать, в чем моя ошибка? Я попытался кнопка перемещение этого класса тоже, но это не будет работать либо,Почему мой автоматический ответ не отправляет смс?

public class ReceiveMessage extends BroadcastReceiver { 

private Button btnchange; 
EditText qwer; 
private Context ctx; 
EditText text; 
TextView asd; 


static TextView messageBox; 
static String phoneNumber; 
private EditText pesan; 

public void onReceive(Context context, Intent intent) { 

    Bundle bundle = intent.getExtras(); 
    if (bundle != null) { 
     Object[] messages = (Object[]) bundle.get("pdus"); 
     SmsMessage[] sms = new SmsMessage[messages.length]; 

     for (int n = 0; n < messages.length; n++) 

     { 
      sms[n] = SmsMessage.createFromPdu((byte[]) messages[n]); 
      break; 
     } 

     for (SmsMessage msg : sms)    
     {   
      String msga = msg.getMessageBody(); 
      String phoneNumber1 = msg.getOriginatingAddress(); 
      String name = getContactName(context, phoneNumber1); 

      if (name != null && !name.equals("null")) 

      { 
       SmsManager smsManager = SmsManager.getDefault(); 

       String sendTo = phoneNumber1; 

// i want to locate my message that i write from another class 
       asd = (TextView) findViewById (R.id.textView1); 
       qwer = (EditText) findViewById (R.id.editText1); 


      try {      
// here's the message that i want to send but the program says null inside my msg 
       String smsMessage = "Hi " +name+ "\n\n" +qwer.getText().toString()+ "\n\nThx"; 

       smsManager.sendTextMessage(sendTo, null, smsMessage, null, 
         null); 

      }catch(Exception ex){ 
       ex.printStackTrace(); 
       System.out.println("errror karena " +ex.getMessage()); 
      } 


      } 

      } 

    } 
    private EditText findViewById (int e) { 

    return null; 
} 

} 
+0

Какое значение вы получаете после этого вызова getContactName. Вы видите какую-то ценность? – Shiv

+1

Почему вы используете 'findViewById' в' BroadcastReceiver'? –

+0

@Shiv: да, есть код, который я удаляю из этого, потому что он слишком длинный, вы хотите его увидеть? я могу опубликовать его. да, я вижу значение из getContactName, проблема в том, когда я получил сообщение, мое сообщение, которое я пишу из другого xml-файла, не отправляет его обратно, он говорит null – noob

ответ

0

Вы не можете получить доступ к надутому виду другого класса из этого класса. Вам нужно проверить, объявили ли вы этот ресивер в манифесте. Посмотрите на этот вопрос переполнения стека. Android - SMS Broadcast receiver

+0

Да, я уже объявляю приемник, и он работает, но когда мой получатель отправляет sms обратно, сообщение, которое отправляет, равно null, и вы можете объяснить, что «не может получить доступ к другому классу с расширенным представлением из этого класса», потому что я все еще новичок, я действительно не понимаю. – noob

+0

Ваш qwer.getText(). ToString() Вызывает NullPointerException, Ваш объект EditText не создается. Yous this Receiver как внутренний класс вашей деятельности и выполните инициализацию для TexTtview и EditText в on create, это будет более удобно для вас. –

+0

Я пробовал, но программа просто выключилась, когда я отправлял свои смс, и я уже изменил путь в манифесте к другому классу вот logcat 01-06 15: 45: 41.908: E/AndroidRuntime (27510): java.lang .RuntimeException: Невозможно создать экземпляр получателя percobaan.safetydriving.ChangeMessage $ Receiver: java.lang.InstantiationException: невозможно создать экземпляр класса percobaan.safetydriving.ChangeMessage $ Receiver; нет пустого конструктора – noob

Смежные вопросы