Exception De Pointeur Null Dans Les Fragments

Je suis NullPointerException lors du lancement d'Un Fragment De Fragment d'autres. Je suis en train d'appeler une méthode dans le deuxième Fragment après le Démarrage du Fragment de façon dynamique.

Voici mon logcat:

05-20 09:58:31.907: E/AndroidRuntime(2585): FATAL EXCEPTION: main
05-20 09:58:31.907: E/AndroidRuntime(2585): java.lang.NullPointerException
05-20 09:58:31.907: E/AndroidRuntime(2585):     at com.exercise.FragmentTest.MyFragment3.setImage(MyFragment3.java:22)
05-20 09:58:31.907: E/AndroidRuntime(2585):     at com.exercise.FragmentTest.FragmentTestActivity$1.onClick(FragmentTestActivity.java:48)
05-20 09:58:31.907: E/AndroidRuntime(2585):     at android.view.View.performClick(View.java:4204)
05-20 09:58:31.907: E/AndroidRuntime(2585):     at android.view.View$PerformClick.run(View.java:17355)
05-20 09:58:31.907: E/AndroidRuntime(2585):     at android.os.Handler.handleCallback(Handler.java:725)
05-20 09:58:31.907: E/AndroidRuntime(2585):     at android.os.Handler.dispatchMessage(Handler.java:92)
05-20 09:58:31.907: E/AndroidRuntime(2585):     at android.os.Looper.loop(Looper.java:137)
05-20 09:58:31.907: E/AndroidRuntime(2585):     at android.app.ActivityThread.main(ActivityThread.java:5041)
05-20 09:58:31.907: E/AndroidRuntime(2585):     at java.lang.reflect.Method.invokeNative(Native Method)
05-20 09:58:31.907: E/AndroidRuntime(2585):     at java.lang.reflect.Method.invoke(Method.java:511)
05-20 09:58:31.907: E/AndroidRuntime(2585):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
05-20 09:58:31.907: E/AndroidRuntime(2585):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
05-20 09:58:31.907: E/AndroidRuntime(2585):     at dalvik.system.NativeStart.main(Native Method)

Et Mon Activité Principale code:

public class FragmentTestActivity extends FragmentActivity{
Fragment fragment;
Button btnFragment1, btnFragment2, btnFragment3;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btnFragment1 = (Button)findViewById(R.id.displayfragment1);
btnFragment2 = (Button)findViewById(R.id.displayfragment2);
btnFragment3 = (Button)findViewById(R.id.displayfragment3);
//get an instance of FragmentTransaction from your Activity 
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
//add a fragment 
MyFragment myFragment = new MyFragment();
fragmentTransaction.add(R.id.myfragment, myFragment);
fragmentTransaction.commit();
btnFragment1.setOnClickListener(btnFragmentOnClickListener);
btnFragment2.setOnClickListener(btnFragmentOnClickListener);
btnFragment3.setOnClickListener(btnFragmentOnClickListener);
}
Button.OnClickListener btnFragmentOnClickListener
= new Button.OnClickListener(){
@Override
public void onClick(View v) {
if(v == btnFragment3){
MyFragment3 newfragment = new MyFragment3();
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
//Replace whatever is in the fragment_container view with this fragment,
//and add the transaction to the back stack
transaction.replace(R.id.myfragment, newfragment);
transaction.addToBackStack(null);
//Commit the transaction
transaction.commit();
newfragment.setImage();
return;
}
//TODO Auto-generated method stub
Fragment newFragment = null;
//Create new fragment
if(v == btnFragment1){
newFragment = new MyFragment();
}
else if(v == btnFragment2){
newFragment = new MyFragment2();
}
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
//Replace whatever is in the fragment_container view with this fragment,
//and add the transaction to the back stack
transaction.replace(R.id.myfragment, newFragment);
transaction.addToBackStack(null);
//Commit the transaction
transaction.commit();
//Create new transaction
}};
}

Et Mon Fragment3 classe est:

public class MyFragment3 extends Fragment {
ImageView iv;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
//TODO Auto-generated method stub
View myFragmentView = inflater.inflate(R.layout.fragmentlayout3, container, false);
iv = (ImageView)myFragmentView.findViewById(R.id.image); 
return myFragmentView;
}
public void setImage(){
iv.setImageResource(R.drawable.penguins);
}
}

Merci de m'aider à surmonter ce problème.

est R. id.image déclarée à l'intérieur d'fragmentlayout3 ?
oui, j'ai besoin d'afficher la dynamique de l'image dans le fragment basé sur l'Activité Principale, cliquez sur le bouton..

OriginalL'auteur wolverine | 2013-05-20