2016-06-20 21 views
-1

fest. Ich versuche, Text in meiner Fragmentdatei aus der Hauptaktivität zu setzen. hier ist mein CodeLegen Sie ein Textfragment aus der Hauptaktivität

dies mein mainActivity.java ist

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

    db = new SQLiteHandler(getApplicationContext()); 

    session = new SessionManager(getApplicationContext()); 

    if (!session.isLoggedIn()) { 
     logoutUser(); 
    } 

    HashMap<String, String> user = db.getUserDetails(); 

    fragmentTransaction = getSupportFragmentManager().beginTransaction(); 
    fragmentTransaction.add(R.id.main_container, new HomeFragment()); 
    fragmentTransaction.commit(); 

    getSupportActionBar().setTitle("Home Fragment"); 

    navigationView = (NavigationView)findViewById(R.id.navigation_view); 
    navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() { 
     @Override 
     public boolean onNavigationItemSelected(MenuItem item) { 
      switch (item.getItemId()){ 
       case R.id.home_id: 
        fragmentTransaction = getSupportFragmentManager().beginTransaction(); 
        fragmentTransaction.replace(R.id.main_container, new HomeFragment()); 
        fragmentTransaction.commit(); 
        getSupportActionBar().setTitle("Home Fragment"); 
        item.setChecked(true); 
        break; 

       case R.id.help_id: 
        fragmentTransaction = getSupportFragmentManager().beginTransaction(); 
        fragmentTransaction.replace(R.id.main_container, new HelpFragment()); 
        fragmentTransaction.commit(); 
        getSupportActionBar().setTitle("Help Fragment"); 
        item.setChecked(true); 
        break; 

       case R.id.logout: 
        logoutUser(); 
      } 

      return false; 
     } 
    }); 

} 

und ich habe diese (HomeFragment.java)

public class HomeFragment extends Fragment { 

public HomeFragment() { 
    // Required empty public constructor 
} 

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

und ich habe diese auf meinem fragment_home.xml

<TextView 
     android:id="@+id/name" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:padding="10dp" 
     android:textColor="@color/lbl_name" 
     android:textSize="24dp" /> 

also kann ich 'name' von der mainActivity setzen? Wenn ja, lass es mich wissen wie?

+0

ein Verfahren in Fragmente erstellen und die von Aktivität nennen. – Rohit5k2

+0

Sie müssen Fragment Verweis halten, und tun was @ Rohit5k2 sagen –

+0

http://stackoverflow.com/questions/16295101/how-to-change-fragments-textviews-text-from-activity –

Antwort

0

Wenn Ihr Fragment hinzufügen, können Sie einen Tag zuweisen:

fragmentTransaction.add(R.id.main_container, new HomeFragment(), "MY_FRAGMENT"); 
fragmentTransaction.commit(); 

Wenn Sie die TextView Sie erholen können das Fragment mit dem verwendeten Tag und rufen eine Methode des Fragments ändern müssen, die den Text ändert :

HomeFragment fragment = (HomeFragment) getSupportFragmentManager() 
    .findFragmentByTag("MY_FRAGMENT"); 
fragment.changeText("New text"); 

Wenn Sie die Support-Bibliothek nicht verwenden, ersetzen getSupportFragmentManager() mit getFragmentManager().

Diese Methode innerhalb der Klasse HomeFragment wäre:

public void changeText(String newText) { 
    TextView textview = (TextView) getView().findViewById(R.id.name); 
    textview.setText(newText); 
} 
-1

Hier ist dein Fehler, den Sie keine Ansicht für Textview ing oncreate Ansicht beweisen, versuchen Sie diese

HomeFragment Klasse

public static TextView mTextView; 



    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.fragment_home, container, false); 

    mTextView=(TextView)view.findviewById(R.id.name); 

    return view; 
    } 

und in Ihrer Klasse Aktivität

nach Fragment Aufruf wie folgt Hinzufügen

HomeFragment.mTextView.setText("Name"); 

Versuchen Sie den obigen Code

+1

Er will einen Text setzen, die kommen aus Aktivität nicht fest codierten Satz innerhalb Fragment –

+0

Dies ist nicht, was OP fragt. – Rohit5k2

+0

aktualisierte meine Antwort –

Verwandte Themen