-3

Je suis en train d'obtenir les données de service à l'aide BroadcastReceiver et je suis en mesure d'afficher ces données dans le journal, mais lorsque je tente d'envoyer les données à l'aide du Bundle comme celui-cidonnées de passage du service à fragmenter donnant point zéro

@Override 
protected void onStart() { 
    myReceiver = new MainActivity.MyReceiver(); 
    IntentFilter intentFilter = new IntentFilter(); 
    intentFilter.addAction(MediaService.MY_ACTION); 
    registerReceiver(myReceiver, intentFilter); 
    super.onStart(); 
} 

private class MyReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context arg0, Intent arg1) { 
     // TODO Auto-generated method stub 

     String datapa = arg1.getStringExtra("DATAPASSED"); 
     String datap2 = arg1.getStringExtra("ALBUM_DATA"); 
     Log.d("TITLE OF SONG",datapa); 
     Log.d("ALBUM",datap2); 



      Bundle bundle = new Bundle(); 
      bundle.putString("Title",datapa); 
      bundle.putString("album", datap2); 
      Songs someFragment = new Songs(); 
      someFragment.setArguments(bundle); 


    } 

} 

et d'obtenir les données comme celui-ci

String strtext = getArguments().getString("album"); 
     if (strtext!=null){ 
      textView.setText(strtext); 
     }else { 
      textView.setText(String.valueOf(songarr.size())); 
     } 
String title = getArguments().getString("Title"); 
    if (title!=null){ 
     textView.setText(title); 
    }else { 
     textView.setText("Total Songs"); 
    } 

erreur je reçois

java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.os.Bundle.getString(java.lang.String)' on a null object reference 
        at beatbox.neelay.anotherbeat.Fragment.Songs.onCreateView(Songs.java:55) 
        at android.support.v4.app.Fragment.performCreateView(Fragment.java:2184) 
        at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1298) 
        at android.support.v4.app.FragmentManagerImpl.moveFragmentsToInvisible(FragmentManager.java:2323) 
        at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2136) 
        at android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps(FragmentManager.java:2092) 
        at android.support.v4.app.FragmentManagerImpl.execSingleAction(FragmentManager.java:1969) 
        at android.support.v4.app.BackStackRecord.commitNowAllowingStateLoss(BackStackRecord.java:620) 
        at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:143) 
        at com.antonyt.infiniteviewpager.InfinitePagerAdapter.finishUpdate(InfinitePagerAdapter.java:67) 
        at android.support.v4.view.ViewPager.populate(ViewPager.java:1268) 
        at android.support.v4.view.ViewPager.populate(ViewPager.java:1116) 
        at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1642) 
        at android.view.View.measure(View.java:18811) 
        at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:716) 
        at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:462) 
        at android.view.View.measure(View.java:18811) 
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5952) 
        at android.support.design.widget.CoordinatorLayout.onMeasureChild(CoordinatorLayout.java:714) 
        at android.support.design.widget.CoordinatorLayout.onMeasure(CoordinatorLayout.java:786) 
        at android.view.View.measure(View.java:18811) 
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5952) 
        at android.widget.FrameLayout.onMeasure(FrameLayout.java:194) 
        at android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:139) 
        at android.view.View.measure(View.java:18811) 
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5952) 
        at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1465) 
        at android.widget.LinearLayout.measureVertical(LinearLayout.java:748) 
        at android.widget.LinearLayout.onMeasure(LinearLayout.java:630) 
        at android.view.View.measure(View.java:18811) 
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5952) 
        at android.widget.FrameLayout.onMeasure(FrameLayout.java:194) 
        at android.view.View.measure(View.java:18811) 
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5952) 
        at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1465) 
        at android.widget.LinearLayout.measureVertical(LinearLayout.java:748) 
        at android.widget.LinearLayout.onMeasure(LinearLayout.java:630) 
        at android.view.View.measure(View.java:18811) 
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5952) 
        at android.widget.FrameLayout.onMeasure(FrameLayout.java:194) 
        at com.android.internal.policy.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2645) 
        at android.view.View.measure(View.java:18811) 
        at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2127) 
        at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1243) 
        at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1479) 
        at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1134) 
        at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6045) 
        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:860) 
        at android.view.Choreographer.doCallbacks(Choreographer.java:672) 
        at android.view.Choreographer.doFrame(Choreographer.java:608) 
        at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:846) 
        at android.os.Handler.handleCallback(Handler.java:739) 
        at android.os.Handler.dispatchMessage(Handler.java:95) 
       at android.os.Looper.loop(Loop 

la chose est que je joue la chanson en service alors quand l'utilisateur cliquera sur le bouton le service enverra les données actuelles de chanson de jeu à l'activité et alors de l'activité au fragment et quand la chanson ne joue pas il montrera juste la chanson totale mais quand je lance l'application il plantage en disant que la chaîne nulle, mais je suis en train de définir l'autre déclaration qu'ils font ce que je fais mal ?? n'importe quel conseil sera utile. le fragment n'obtiendra pas les données jusqu'à ce que l'utilisateur cliquent sur la liste c'est la chose principale. Using the same bundle way i am able to send the data to other fragment ici la valeur initiale est nulle comment je peux résoudre ce problème.

+1

Copie possible de [Qu'est-ce qu'une exception NullPointerException, et comment la réparer?] (Http://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix -it) – Malik

+0

L'erreur est probablement avant votre instruction else-if lorsque vous essayez d'obtenir la chaîne à partir des arguments, afin de vous aider, nous avons besoin de plus de code. –

+0

monsieur il donnera null lorsque la chanson ne joue pas –

Répondre

0

Au lieu de transmettre des données i indirectement utilisé la voie directe et je Posé comme cela dans le service

Intent intent = new Intent(); 
    intent.setAction(MY_ACTION); 

    intent.putExtra("DATAPASSED", activeAudio.getTitle()); 
    intent.putExtra("ALBUM_DATA",activeAudio.getAlbum()); 
    sendBroadcast(intent); 

dans mon fragment

@Override 
public void onStart() { 
    super.onStart(); 


    myReceiver = new MyReceiver(); 
    IntentFilter intentFilter = new IntentFilter(); 
    intentFilter.addAction(MediaService.MY_ACTION); 
    getActivity().registerReceiver(myReceiver, intentFilter); 

} 

private class MyReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context arg0, Intent arg1) { 
     // TODO Auto-generated method stub 

     String datapa = arg1.getStringExtra("DATAPASSED"); 
     String datap2 = arg1.getStringExtra("ALBUM_DATA"); 
     Log.d("TITLE OF SONG", datapa); 
     Log.d("ALBUM", datap2); 
     textView.setText(datapa); 
     textView1.setText(datap2); 
    } 

} 

Espérons que cela aidera quelqu'un.

0

voir si votre GetArguments est non nul première

si (GetArguments()! = Null) // puis faire les choses que vous faites savoir tirer les ficelles du paquet.

+0

essayé mais semble qu'il est toujours nul comment réparer cette idée –

+0

comme vous l'avez mentionné dans le commentaire "il donnera null lorsque la chanson ne joue pas" .. donc vous devez transmettre des données par faisceau lorsque la chanson est en cours de lecture. reste c'est à vous de penser –

+0

c'est quand la chanson est changée ou commencer à jouer, il va envoyer les données à l'activité, puis à fragmenter –