0

Je suis un débutant au studio android, j'ai pour mission de redessiner l'application. J'utilise le fragment. Mais quand je cours mon application, elle s'est arrêtée et il n'y a aucune erreur dans mon Gradle. J'ai cherché beaucoup de site Web pour résoudre ma question, mais n'ai toujours aucune idée.Android NULL Pointer Exception et Fragment de transmission de données

J'ai quelques questions ci-dessous.

  1. Comment réparer l'exception java.lang.RuntimeException (Exception de pointeur NULL)?
09-30 02:59:56.574 17706-17706/? E/memtrack: Couldn't load memtrack module (No such file or directory) 
09-30 02:59:56.574 17706-17706/? E/android.os.Debug: failed to load memtrack module: -2 
09-30 02:59:56.996 17722-17722/? E/memtrack: Couldn't load memtrack module (No such file or directory) 
09-30 02:59:56.996 17722-17722/? E/android.os.Debug: failed to load memtrack module: -2 
09-30 02:59:57.090 17734-17734/? E/AndroidRuntime: FATAL EXCEPTION: main 
                Process: tw.com.flag.parking22, PID: 17734 
                java.lang.RuntimeException: Unable to start activity ComponentInfo{tw.com.flag.parking22/tw.com.flag.parking22.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference 
                 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325) 
                 at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387) 
                 at android.app.ActivityThread.access$800(ActivityThread.java:151) 
                 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303) 
                 at android.os.Handler.dispatchMessage(Handler.java:102) 
                 at android.os.Looper.loop(Looper.java:135) 
                 at android.app.ActivityThread.main(ActivityThread.java:5254) 
                 at java.lang.reflect.Method.invoke(Native Method) 
                 at java.lang.reflect.Method.invoke(Method.java:372) 
                 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
                 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 
                Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference 
                 at tw.com.flag.parking22.MainActivity.init(MainActivity.java:102) 
                 at tw.com.flag.parking22.MainActivity.onCreate(MainActivity.java:71) 
                 at android.app.Activity.performCreate(Activity.java:5990) 
                 at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106) 
                 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278) 
                 at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)  
                 at android.app.ActivityThread.access$800(ActivityThread.java:151)  
                 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)  
                 at android.os.Handler.dispatchMessage(Handler.java:102)  
                 at android.os.Looper.loop(Looper.java:135)  
                 at android.app.ActivityThread.main(ActivityThread.java:5254)  
                 at java.lang.reflect.Method.invoke(Native Method)  
                 at java.lang.reflect.Method.invoke(Method.java:372)  
                 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)  
                 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)  
09-30 02:59:57.211 1160-1160/? E/EGL_emulation: tid 1160: eglCreateSyncKHR(1865): error 0x3004 (EGL_BAD_ATTRIBUTE) 
09-30 03:02:15.409 2159-19872/com.google.android.gms E/Herrevad: [350] RemoteReportsRefreshChimeraService.a: want to send authenticated request, but no Google account on device 
09-30 03:02:15.445 1998-2721/com.google.android.gms.persistent E/SQLiteLog: (2067) abort at 31 in [INSERT INTO pending_ops(source,tag,requires_charging,target_package,source_version,required_network_type,flex_time,target_class,runtime,retry_strategy,last_runtime,period,task_type,job_id,user_ 
09-30 03:02:15.445 1998-2721/com.google.android.gms.persistent E/SQLiteDatabase: Error inserting source=4 tag=NetworkReportService requires_charging=0 target_package=com.google.android.gms source_version=11509000 required_network_type=2 flex_time=3600000 target_class=com.google.android.gms.common.stats.net.NetworkReportService runtime=1506742923454 retry_strategy={"maximum_backoff_seconds":{"3600":0},"initial_backoff_seconds":{"30":0},"retry_policy":{"0":0}} last_runtime=0 period=7200000 task_type=1 job_id=-1 user_id=0 
                       android.database.sqlite.SQLiteConstraintException: UNIQUE constraint failed: pending_ops.tag, pending_ops.target_class, pending_ops.target_package, pending_ops.user_id (code 2067) 
                        at android.database.sqlite.SQLiteConnection.nativeExecuteForLastInsertedRowId(Native Method) 
                        at android.database.sqlite.SQLiteConnection.executeForLastInsertedRowId(SQLiteConnection.java:782) 
                        at android.database.sqlite.SQLiteSession.executeForLastInsertedRowId(SQLiteSession.java:788) 
                        at android.database.sqlite.SQLiteStatement.executeInsert(SQLiteStatement.java:86) 
                        at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1471) 
                        at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1341) 
                        at swi.a(:[email protected]:208) 
                        at sxo.a(:[email protected]:64) 
                        at sxp.handleMessage(:[email protected]:29) 
                        at android.os.Handler.dispatchMessage(Handler.java:102) 
                        at android.os.Looper.loop(Looper.java:135) 
                        at android.os.HandlerThread.run(HandlerThread.java:61) 
09-30 03:02:15.446 1998-2721/com.google.android.gms.persistent E/NetworkScheduler: Error persisting task: com.google.android.gms/.common.stats.net.NetworkReportService{u=0 tag="NetworkReportService" trigger=window{period=7200s,flex=3600s,earliest=5988s,latest=9588s} requirements=[NET_ANY] attributes=[PERSISTED,RECURRING] scheduled=2388s last_run=N/A jid=N/A status=PENDING retries=0} 
09-30 03:02:15.474 1170-1578/? E/Drm: Failed to find drm plugin 
09-30 03:02:15.563 2159-2680/com.google.android.gms E/Volley: [129] BasicNetwork.performRequest: Unexpected response code 307 for https://android.googleapis.com/nova/herrevad/network_quality_info 
09-30 03:02:15.888 1998-2721/com.google.android.gms.persistent E/SQLiteLog: (2067) abort at 31 in [INSERT INTO pending_ops(source,tag,requires_charging,target_package,source_version,required_network_type,flex_time,target_class,runtime,retry_strategy,last_runtime,period,task_type,job_id,user_ 
09-30 03:02:15.888 1998-2721/com.google.android.gms.persistent E/SQLiteDatabase: Error inserting source=4 tag=AggregationTaskTag requires_charging=0 target_package=com.google.android.gms source_version=11509000 required_network_type=2 flex_time=600000 target_class=com.google.android.gms.checkin.EventLogService runtime=1506741123628 retry_strategy={"maximum_backoff_seconds":{"3600":0},"initial_backoff_seconds":{"30":0},"retry_policy":{"0":0}} last_runtime=0 period=1800000 task_type=1 job_id=-1 user_id=0 
                       android.database.sqlite.SQLiteConstraintException: UNIQUE constraint failed: pending_ops.tag, pending_ops.target_class, pending_ops.target_package, pending_ops.user_id (code 2067) 
                        at android.database.sqlite.SQLiteConnection.nativeExecuteForLastInsertedRowId(Native Method) 
                        at android.database.sqlite.SQLiteConnection.executeForLastInsertedRowId(SQLiteConnection.java:782) 
                        at android.database.sqlite.SQLiteSession.executeForLastInsertedRowId(SQLiteSession.java:788) 
                        at android.database.sqlite.SQLiteStatement.executeInsert(SQLiteStatement.java:86) 
                        at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1471) 
                        at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1341) 
                        at swi.a(:[email protected]:208) 
                        at sxo.a(:[email protected]:64) 
                        at sxp.handleMessage(:[email protected]:29) 
                        at android.os.Handler.dispatchMessage(Handler.java:102) 
                        at android.os.Looper.loop(Looper.java:135) 
                        at android.os.HandlerThread.run(HandlerThread.java:61) 
09-30 03:02:15.888 1998-2721/com.google.android.gms.persistent E/NetworkScheduler: Error persisting task: com.google.android.gms/.checkin.EventLogService{u=0 tag="AggregationTaskTag" trigger=window{period=1800s,flex=600s,earliest=1787s,latest=2387s} requirements=[NET_ANY] attributes=[PERSISTED,RECURRING] scheduled=587s last_run=N/A jid=N/A status=PENDING retries=0} 
09-30 03:03:37.417 1170-1578/? E/audio_hw_generic: Error opening input stream format 1, channel_mask 0010, sample_rate 16000 
09-30 03:30:15.406 2159-21157/com.google.android.gms E/Herrevad: [355] RemoteReportsRefreshChimeraService.a: want to send authenticated request, but no Google account on device 
09-30 03:30:15.511 2159-21162/com.google.android.gms E/ZappConnFactory: Unable to bind to PlayStore 
09-30 03:30:15.518 2159-21168/com.google.android.gms E/ZappLogOperation: Unable to bind to Phonesky 
09-30 03:30:15.526 2159-21162/com.google.android.gms E/ZappConnFactory: Unable to bind to PlayStore 
09-30 03:30:15.526 2159-21162/com.google.android.gms E/ZappConnFactory: Unable to bind to PlayStore 
09-30 03:30:15.551 2159-2678/com.google.android.gms E/Volley: [127] BasicNetwork.performRequest: Unexpected response code 307 for https://android.googleapis.com/nova/herrevad/network_quality_info 
09-30 03:30:15.572 1170-1578/? E/Drm: Failed to find drm plugin 
09-30 03:30:22.524 2159-2159/com.google.android.gms E/ActivityThread: Service com.google.android.gms.chimera.GmsIntentOperationService has leaked ServiceConnection [email protected] that was originally bound here 
                     android.app.ServiceConnectionLeaked: Service com.google.android.gms.chimera.GmsIntentOperationService has leaked ServiceConnection [email protected] that was originally bound here 
                      at android.app.LoadedApk$ServiceDispatcher.<init>(LoadedApk.java:1077) 
                      at android.app.LoadedApk.getServiceDispatcher(LoadedApk.java:971) 
                      at android.app.ContextImpl.bindServiceCommon(ContextImpl.java:1774) 
                      at android.app.ContextImpl.bindService(ContextImpl.java:1757) 
                      at android.content.ContextWrapper.bindService(ContextWrapper.java:539) 
                      at android.content.ContextWrapper.bindService(ContextWrapper.java:539) 
                      at android.content.ContextWrapper.bindService(ContextWrapper.java:539) 
                      at android.content.ContextWrapper.bindService(ContextWrapper.java:539) 
                      at com.google.android.gms.chimera.container.zapp.ZappLogOperation.onHandleIntent(:[email protected]:1) 
                      at com.google.android.chimera.IntentOperation.onHandleIntent(:[email protected]:2) 
                      at bwy.run(:[email protected]:10) 
                      at bwv.run(:[email protected]:14) 
                      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 
                      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) 
                      at java.lang.Thread.run(Thread.java:818) 
09-30 03:44:15.607 1998-2721/com.google.android.gms.persistent E/SQLiteLog: (2067) abort at 31 in [INSERT INTO pending_ops(source,tag,requires_charging,target_package,source_version,required_network_type,flex_time,target_class,runtime,retry_strategy,last_runtime,period,task_type,job_id,user_ 
09-30 03:44:15.607 1998-2721/com.google.android.gms.persistent E/SQLiteDatabase: Error inserting source=4 tag=AggregationTaskTag requires_charging=0 target_package=com.google.android.gms source_version=11509000 required_network_type=2 flex_time=600000 target_class=com.google.android.gms.checkin.EventLogService runtime=1506743055606 retry_strategy={"maximum_backoff_seconds":{"3600":0},"initial_backoff_seconds":{"30":0},"retry_policy":{"0":0}} last_runtime=0 period=1800000 task_type=1 job_id=-1 user_id=0 
                       android.database.sqlite.SQLiteConstraintException: UNIQUE constraint failed: pending_ops.tag, pending_ops.target_class, pending_ops.target_package, pending_ops.user_id (code 2067) 
                        at android.database.sqlite.SQLiteConnection.nativeExecuteForLastInsertedRowId(Native Method) 
                        at android.database.sqlite.SQLiteConnection.executeForLastInsertedRowId(SQLiteConnection.java:782) 
                        at android.database.sqlite.SQLiteSession.executeForLastInsertedRowId(SQLiteSession.java:788) 
                        at android.database.sqlite.SQLiteStatement.executeInsert(SQLiteStatement.java:86) 
                        at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1471) 
                        at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1341) 
                        at swi.a(:[email protected]:208) 
                        at sxo.a(:[email protected]:64) 
                        at sxp.handleMessage(:[email protected]:29) 
                        at android.os.Handler.dispatchMessage(Handler.java:102) 
                        at android.os.Looper.loop(Looper.java:135) 
                        at android.os.HandlerThread.run(HandlerThread.java:61) 
09-30 03:44:15.607 1998-2721/com.google.android.gms.persistent E/NetworkScheduler: Error persisting task: com.google.android.gms/.checkin.EventLogService{u=0 tag="AggregationTaskTag" trigger=window{period=1800s,flex=600s,earliest=1199s,latest=1799s} requirements=[NET_ANY] attributes=[PERSISTED,RECURRING] scheduled=0s last_run=N/A jid=N/A status=PENDING retries=0} 
09-30 03:44:15.637 2159-21184/com.google.android.gms E/Herrevad: [371] RemoteReportsRefreshChimeraService.a: want to send authenticated request, but no Google account on device 
09-30 03:44:15.755 2159-2676/com.google.android.gms E/Volley: [126] BasicNetwork.performRequest: Unexpected response code 307 for https://android.googleapis.com/nova/herrevad/network_quality_info 
09-30 03:46:13.425 1171-1171/? E/installd: eof 
09-30 03:46:13.425 1171-1171/? E/installd: failed to read size 

est ici le principal code d'activité

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     viewPager =(ViewPager) findViewById(R.id.pager); 
     PagerAdapter padapter = new PagerAdapter(getSupportFragmentManager()); 
     viewPager.setAdapter(padapter); 
     //-------------------------------------------------------------------- 
     init(); 
     Action(); 
    } 

    @Override 
    public void onConfigurationChanged(Configuration newConfig) { 
     super.onConfigurationChanged(newConfig); 
     if(newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) { 

     } 
     else { 

     } 
    } 

    private void init(){ 
     System.out.println("start---------------------"); 
     textView_userIDVal = (TextView) findViewById(R.id.textView_userIDVal); 
     textView_parkingNoVal = (TextView) findViewById(R.id.textView_parkingNoVal); 
     textView_pillarNoVal = (TextView) findViewById(R.id.textView_pillarNoVal); 
     textView_colorVal = (TextView) findViewById(R.id.textView_colorVal); 
     imageView = (ImageView) findViewById(R.id.imageView); 
     button_space = (Button) findViewById(R.id.button_space); 
     button_scan = (Button) findViewById(R.id.button_scan); 
     button_find = (Button) findViewById(R.id.button_find); 
     simpleDateFormat = new SimpleDateFormat("MM/dd 'at' HH"); 


     if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD) { 
      userID = Build.SERIAL; 
      //-------------error start next---------------- 
      textView_userIDVal.setText("User ID : " + userID); 
     } 

     if(ContextCompat.checkSelfPermission(this, android.Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) { 
      ActivityCompat.requestPermissions(this, new String[]{android.Manifest.permission.CAMERA}, 200); 
     } 

     sharedPreferences = getSharedPreferences("Data", 0); 
     if(sharedPreferences.contains("parkingNum") && sharedPreferences.contains("time")) { 
      parkingNumtmp = sharedPreferences.getString("parkingNum", ""); 
      textView_parkingNoVal.setText("Parking No. : " + parkingNumtmp + "\t(" + sharedPreferences.getString("time", "") + ")"); 
     } 

     builder = new AlertDialog.Builder(this); 
     builder.setCancelable(false); 
     builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int which) { 
      } 
     }); 

     builder_timeout = new AlertDialog.Builder(this); 
     builder_timeout.setTitle("REMIND"); 
     builder_timeout.setMessage("Do you find your car ?"); 
     builder_timeout.setCancelable(false); 
     builder_timeout.setPositiveButton("Yes", new DialogInterface.OnClickListener() { 

      @Override 
      public void onClick(DialogInterface dialog, int which) { 
       try { 
        json_data = new JSONObject(); 
        json_data.put("MT", "timeout"); 
        json_data.put("PlaceMac", parkingNumtmp); 
        json_data.put("UserMac", userID); 
        json_write = new JSONObject(); 
        json_write.put("Data", json_data); 
        json_write.put("Read", false); 
        isCloseScreen = false; 
       } catch (JSONException e) { 
        e.printStackTrace(); 
       } 
       thread = new Thread(TCP); 
       thread.start(); 
       timer_count = 0; 
       startFlag = false; 
      } 
     }); 
     builder_timeout.setNegativeButton("No", new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int which) { 
       maxTime = 10; 
       maxTime = maxTime/2; 
       timer_count = 0; 
       startFlag = true; 
      } 
     }); 
    } 

    private void Action(){ 
     button_space.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       try { 
        json_data = new JSONObject(); 
        json_data.put("MT", "count"); 

        json_write = new JSONObject(); 
        json_write.put("Data", json_data); 
        json_write.put("Read", true); 
        //System.out.println(json_write + "\n"); 
       } catch (JSONException e) { 
        e.printStackTrace(); 
       } 
       thread = new Thread(TCP); 
       thread.start(); 
       /*builder.setTitle("INFORMATION"); 
       builder.setMessage("All : " + "\nNow : "); 
       AlertDialog alertDialog = builder.create(); 
       alertDialog.show();*/ 
      } 
     }); 
     button_scan.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Intent intent = new Intent(MainActivity.this, ScanActivity.class); 
       startActivityForResult(intent, REQUEST_CODE); 
      } 
     }); 

     button_find.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       if(parkingNumtmp != null) { 
        try { 
         maxTime = 10; 
         json_data = new JSONObject(); 
         json_data.put("MT", "search"); 
         json_data.put("PlaceMac", parkingNumtmp); 
         json_data.put("UserMac", userID); 

         json_write = new JSONObject(); 
         json_write.put("Data", json_data); 
         json_write.put("Read", true); 
         //System.out.println(json_write + "\n"); 
        } catch (JSONException e) { 
         e.printStackTrace(); 
        } 
        Toast.makeText(getApplicationContext(), "Don't close the screen before you find your car ! ", Toast.LENGTH_LONG).show(); 
        thread = new Thread(TCP); 
        thread.start(); 
       } 
       else { 
        builder.setTitle("WARNING"); 
        builder.setMessage("Please scan QRcode first!"); 
        AlertDialog alertDialog = builder.create(); 
        alertDialog.show(); 
       } 
      } 
     }); 
    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     if(requestCode == REQUEST_CODE && resultCode == RESULT_OK) { 
      if(data != null) { 
       final Barcode barcode = data.getParcelableExtra("barcode"); 
       parkingNumtmp = barcode.displayValue; 
       Date date = new Date(); 
       final String time = simpleDateFormat.format(date); 
       sharedPreferences.edit().putString("parkingNum", parkingNumtmp).putString("time", time).commit(); 
       textView_parkingNoVal.post(new Runnable() { 
        @Override 
        public void run() { 
         textView_parkingNoVal.setText("Parking No. : " + parkingNumtmp + "\t(" + time +")"); 
        } 
       }); 
      } 
     } 
    } 
  1. A propos de Fragment. Y a-t-il un paramètre que je dois faire lorsque je reçois un formulaire de données?

Je souhaite placer les données reçues dans TextView dans l'autre vue.

+1

qui est la ligne numéro de la ligne 120 de l'activité principale? –

Répondre

0

Votre fonction init() est probablement essayer de trouver des vues à l'intérieur des fragments dans le pager de vue. Cependant, à ce moment-là, les fragments ne sont pas encore gonflés, donc vos vues dans l'activité sont nulles et essayer d'y faire fonctionner donne NPE. Vous devez utiliser onCreateView() des classes Fragment pour trouver ces vues. Ensuite, vous pouvez notifier l'activité principale via le mécanisme de rappel.

Par exemple, créez FirstFragment comme suit:

public class FirstFragment extends Fragment { 

    private OnFirstFragmentReadyListener callback; 

    @Override 
    public void onAttach(Context context) { 
     super.onAttach(context); 

     // This makes sure that the container activity has implemented the callback. 
     try { 
      callback = (OnFirstFragmentReadyListener) context; 
     } catch (ClassCastException e) { 
      throw new ClassCastException(context.toString() 
        + " must implement OnFirstFragmentReadyListener"); 
     } 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.fragment_first, container, false); 
     return rootView; 
    } 

    @Override 
    public void onActivityCreated(@Nullable Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 

     // Notify the parent activity that the fragment is inflated. 
     callback.onFirstFragmentReady(); 
    } 

    public interface OnFirstFragmentReadyListener { 
     void onFirstFragmentReady(); 
    } 
} 

Laissez la disposition des FirstFragment comme suit (référencé ci-dessus fragment_first):

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <TextView 
     android:id="@+id/first_label" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 

</RelativeLayout> 

On suppose que nous avons créé deux autres classes de fragments similaires nommées SecondFragment et ThirdFragment. L'activité doit alors ressembler à ceci:

public class MainActivity extends AppCompatActivity implements FirstFragment.OnFirstFragmentReadyListener, 
     SecondFragment.OnSecondFragmentReadyListener, ThirdFragment.OnThirdFragmentReadyListener { 

    ... 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     viewPager =(ViewPager) findViewById(R.id.pager); 
     PagerAdapter pagerAdapter = new PagerAdapter(getSupportFragmentManager()); 
     viewPager.setAdapter(pagerAdapter); 

     // Don't call these functions here, spread them into callbacks. 
     // init(); 
     // Action(); 
    } 

    @Override 
    public void onFirstFragmentReady() { 
     TextView firstTextView = (TextView) findViewById(R.id.first_label); 
     ... 
     // Now you have the views from FirstFragment instance. 
     // You can now call setText() or setOnClickListener() here. 
    } 

    @Override 
    public void onSecondFragmentReady() { 
     TextView secondTextView = (TextView) findViewById(R.id.second_label); 
     ... 
     // Now you have the views from SecondFragment instance. 
     // You can now call setText() or setOnClickListener() here. 
    } 

    @Override 
    public void onThirdFragmentReady() { 
     TextView thirdTextView = (TextView) findViewById(R.id.third_label); 
     ... 
     // Now you have the views from ThirdFragment instance. 
     // You can now call setText() or setOnClickListener() here. 
    } 
} 

Bien que ce code fonctionne, ce n'est peut-être pas la meilleure solution. Je pense qu'il est préférable de faire des opérations sur des vues comme la définition de textes ou l'assignation de OnClickListeners dans des fragments. Si vous devez notifier un fragment après qu'une action s'est produite dans l'activité parente, vous pouvez implémenter des méthodes publiques à l'intérieur de fragments et vous pouvez les appeler à partir de l'activité parente si nécessaire.

+0

D'abord merci pour votre réponse! Voulez-vous dire que je dois trouver l'ID d'objet dans la classe fragment avec la fonction findViewById et si je veux changer le contenu de TextView, je dois utiliser le mécanisme de rappel dans MainActivity? –

+0

Oui, je vais fournir du code plus tard aujourd'hui. – Mehmed

+0

Merci pour votre aide !!!! –

0

En fragment, vous devez appeler la fonction en fonction onCreateView (raison que la mention par @Mehmed) qui est quelque chose comme ci-dessous:

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 

    // Inflate the layout for this fragment 
    View view = inflater.inflate(R.layout.your_fragment, container, false); 
    //all findViewById; 
    TextView yourTextView = (Text)view.findViewById(R.id.yourTextView); 


    //here call for your function 
    init(); 
    // any other function goes here 


    return view; 
    } 
+0

c'est une autre question..donc ma réponse vous aider pour le problème de cette question ?? – ken

+0

Merci pour votre réponse! Je veux créer 3 pages (fragment un, deux, trois respectivement). Mon projet contient: MainActivity.java> qui va FragmentActivity, , , Il y a quelques boutons et textViews en eux. Ma question est, si je veux changer le contenu de TextView quand je reçois les données du serveur, que dois-je faire dans mon programme? Pour utiliser la méthode setText dans mon "fragment one .java"? Ou dans le MainActivity? Merci! –

+0

oh, désolé ... je suis sur la classe ... Alors je vais essayer dès que rentrer à la maison –