0

Я хочу знать, есть ли способ передать строку из активности в класс, который расширяет phoneStatelistener.передать строку в класс, который расширяет PhoneStateListener

в передающем конце, я использовал

Intent pass = new Intent(ListActivity.this,CallHelper.class); 
    pass.putExtra("name", name); 

и в приемном конце ..

public class CallHelper { 

    private class CallStateListener extends PhoneStateListener { 
     int flag; 

     @Override 
     public void onCallStateChanged(int state, String incomingNumber) { 
      String name = getintent().getStringExtra(); 
     } 

но показывает ошибку в getintent() части, есть ли альтернативный способ?

+0

getIntent(). GetStringExtra ("name")); – Tarun

+1

@Tarun Вы не можете вызвать 'getIntent' в классе, который расширяет' PhoneStateListener' –

ответ

2

Вы не можете позвонить в getIntent() в класс, который extends PhoneStateListener. Если CallHelper является активностью, я предлагаю переопределить конструктор по умолчанию вашего CallStateListener.

public class CallHelper extends Activity{ 

    String name; 
    @Override 
    public void onCreate(Bundle savedInstanceState){ 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.call_helper_layout); 
     Bundle extras = getIntent().getExtras(); 
     if(extras != null){ 
      name = extras.getString("name"); 
     } 
     CallStateListener c = new CallStateListener(name); 
    } 

    private class CallStateListener extends PhoneStateListener { 
     int flag; 
     String name; 

     public CallStateListener(String name){ 
      this.name = name; 
     } 

     @Override 
     public void onCallStateChanged(int state, String incomingNumber) { 
       //do stuff with name 
     }   
    } 
} 
0

Я всегда делаю это так: создаю класс, а затем использую сеттер для установки значения. Отправка Intent многовато на мой взгляд ...

Активности:

class SomeActivity extends Activity { 

    public void onCreate(Bundle savedInstanceState){ 
     CallStateListener listener = new CallStateListener(); 
     listener.setFlag(myValue); 
    } 

} 

Приёмник:

class CallStateListener extends PhoneStateListener { 
    int flag; 

    @Override 
    public void onCallStateChanged(int state, String incomingNumber) { 
     String name = getintent().getStringExtra(); 
    } 

    public void setFlag(int flag) { 
     this.flag = flag; 
    } 

    ... 

} 

Надежда, что помогает!

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