2017-04-21 1 views
0

J'essaie d'utiliser findViewByIdgetApplicationContext et getSystemService dans la classe MediaButtonReceiver mais aucune des méthodes ne peut être résolue. Je suppose que je dois passer à la classe contexte MediaButtonReceiver afin de permettre l'utilisation de ces fonctions, mais je ne peux pas comprendre commentUtilisation de findViewById dans une classe de non-activité

classe essayant d'utiliser les méthodes:

public class external extends MediaButtonReceiver { 

private Context context; 

Activity activity; 
public external(Context context,Activity activity){ 
    this.context=context; 
    this.activity=activity; 
} 



@Override 
public void onReceive(Context context, Intent intent) { 
    Log.d("Button", "pressed"); 




    final ToggleButton toggleWF = (ToggleButton) findViewById(R.id.WiFi_toggle); 
    final ToggleButton toggleBT = (ToggleButton) findViewById(R.id.BT_toggle); 
    final ToggleButton toggleNFC = (ToggleButton) findViewById(R.id.NFC_toggle); 
    NfcAdapter mNfcAdapter = NfcAdapter.getDefaultAdapter(getApplicationContext()); 
    WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE); 

Activité principale:

public class MainActivity extends Activity { 


@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    ((AudioManager) getSystemService(AUDIO_SERVICE)).registerMediaButtonEventReceiver(new ComponentName(
      this, 
      external.class)); 


    external External = new external(MainActivity.this,this); 

} 

} 
+0

Veuillez expliquer ce que vous devez réaliser, autant que je peux comprendre, vous essayez de déclencher BroadcastReceiver, et du récepteur de diffusion, vous devez afficher l'interface utilisateur pour obtenir entrée de l'utilisateur? Dans ce cas, la façon dont vous déclenchez le récepteur de diffusion est faux.S'il vous plaît commenter sur la question, alors je peux vous donner le code de réponse –

+0

Vous n'avez pas besoin d'un contexte et une activité .. Toute activité i s déjà un Contexte –

+0

@ChethanShetty Essentiellement, j'essaie de faire en sorte que quand un bouton multimédia externe est pressé, l'application va vérifier l'état des boutons bascule et ensuite utiliser ces états/variables dans le code par la suite. Le code du bouton externe fonctionne, j'ai juste besoin de faire en sorte que les méthodes listées ci-dessus soient utilisables dans la classe MediaButtonReceiver ou je pourrais mettre ces méthodes dans MainActivity si je pouvais trouver un moyen de rendre les variables accessibles dans la classe MediaButtonReceiver. Je ne sais tout simplement pas comment aborder l'une ou l'autre de ces solutions. –

Répondre

0

vous pouvez utiliser la disposition comme ceci.

 Dialog dialog = new Dialog(context); 
     dialog.setContentView(R.layout.your_layout_xml); 


     // set the dialog components - text, image and button 
     TextView text = (TextView) dialog.findViewById(R.id.text); 
0

Ne faites pas longue opération en cours d'exécution dans le récepteur et vous pouvez ouvrir une activité ou une activité de dialogue de méthode OnReceive comme context.startActivity (nouvelle intention (Contex, Activity.class) et en classe d'activité vous pouvez effectuer tout ce que vous Également, ne transmettez pas l'objet d'activité à Receiver en utilisant le constructeur