title: Why is my variable null when I've set it?
body: <p>Before explaining, I will show you my (shorted) code:</p>
  <pre><code>public class MainActivity extends AppCompatActivity 
  {
      FrameLayout simpleFrameLayout;
      TabLayout tabLayout;
      SecondFragment s = new SecondFragment();
      
      @Override
      protected void onCreate(Bundle savedInstanceState)
      {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.main);
          simpleFrameLayout = (FrameLayout) findViewById(R.id.simpleFrameLayout);
          tabLayout = (TabLayout) findViewById(R.id.simpleTabLayout);
  // Create a new Tab named &quot;First&quot;
          TabLayout.Tab firstTab = tabLayout.newTab();
          firstTab.setText(&quot;First&quot;); // set the Text for the first Tab
      
  // first tab
          tabLayout.addTab(firstTab); // add  the tab at in the TabLayout
  // Create a new Tab named &quot;Second&quot;
          TabLayout.Tab secondTab = tabLayout.newTab();
          secondTab.setText(&quot;Second&quot;); // set the Text for the second Tab
          
          tabLayout.addTab(secondTab); // add  the tab  in the TabLayout
  
          Fragment fragment = null;
          fragment = new FirstFragment();
          FragmentManager fm = getSupportFragmentManager();
          FragmentTransaction ft = fm.beginTransaction();
          ft.replace(R.id.simpleFrameLayout, fragment);
          ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
          ft.commit();
          
          tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
                  @Override
                  public void onTabSelected(TabLayout.Tab tab) {
  // get the current selected tab's position and replace the fragment accordingly
                      Fragment fragment = null;
                      switch (tab.getPosition()) {
                          case 0:
                              fragment = new FirstFragment();
                              myMenu.findItem(R.id.telefono).setVisible(false);
                              break;
                          case 1:
                              fragment = s;
                              myMenu.findItem(R.id.telefono).setVisible(true);
                              break;
                      }
                      FragmentManager fm = getSupportFragmentManager();
                      FragmentTransaction ft = fm.beginTransaction();
                      ft.replace(R.id.simpleFrameLayout, fragment);
                      ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
                      ft.commit();
                  }
                  @Override
                  public void onTabUnselected(TabLayout.Tab tab) {
  
                  }
  
                  @Override
                  public void onTabReselected(TabLayout.Tab tab) {
  
                  }
              });
      }
      
      public void conectar(String nombre, String ip, int puerto) {
          //Code...
          Executor executor = Executors.newSingleThreadExecutor();
          executor.execute(new Runnable() {
                  @Override
                  public void run() {
                      Looper.prepare();
                      runOnUiThread(new Runnable() {
                              @Override
                              public void run() {
                                  try{
                                      //Code...
                                      try {
                                          //Code
                                          TabLayout.Tab tab = tabLayout.getTabAt(1);
                                          tab.select();
                                          s.roomText(param1);
                                          
                                      }
                                      catch(SocketTimeoutException ex)
                                      {
  
                                      }
                                  }
                                  catch(Exception e){
                                      StringWriter sw = new StringWriter();
                                      e.printStackTrace(new PrintWriter(sw));
                                      String stacktrace = sw.toString();
                                      // create an email intent to send to yourself
                                      final Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
                                      emailIntent.setType(&quot;plain/text&quot;);
                                      emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[] { &quot;lets.think.android@gmail.com&quot; });
                                      emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, &quot;App Error Report&quot;);
                                      emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, stacktrace);
                                      // start the email activity - note you need to start it with a chooser
                                      startActivity(Intent.createChooser(emailIntent, &quot;Send error report...&quot;));
                                  }
                              }
                          });
                      
                  }
              });
  
      }
  }
  </code></pre>
  <p>SecondFragment:</p>
  <pre><code>package com.mycompany.myapp;
      
      import android.os.Bundle;
      import android.support.v4.app.Fragment;
      import android.view.LayoutInflater;
      import android.view.View;
      import android.view.ViewGroup;
      import android.widget.*;
      
      public class SecondFragment extends Fragment
      {
          EditText chat, room;
          
          public SecondFragment() {
      // Required empty public constructor
          }
      
          @Override
          public void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
          }
      
          @Override
          public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                   Bundle savedInstanceState) {
      // Inflate the layout for this fragment
              View view = inflater.inflate(R.layout.fragment_second, container, false);
              room = (EditText) view.findViewById(R.id.mainEditText1);
              chat = (EditText) view.findViewById(R.id.chatEditText1);
              return view;
          }
          
          public void roomText(String t){
              room.setText(t);
          }
      }
  </code></pre>
  <p>I am trying to set the text of an editText of a fragment from the MainActivity. For that I wrote a method in SecondFragment that should change the text of that editText. And this method is called in the MainActivity.</p>
  <p>Why is the &quot;room&quot; object null if the tab was selected beforehand and the elements of SecondFragment should actually already be created? I do not understand that.</p>
  <p>I already road this: <a href="https://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix-it">What is a NullPointerException, and how do I fix it?</a></p>
  <p>But it doesn't help me.</p>
  <p>I've seen that many users are voting minus points without reason. So I hope this question is acceptable.</p>