2017-04-25 4 views
0

Den Code in meinem Fragmente modifiziert ist wie folgt aufgebaut:Knopfes des onClick Methode eine globale Variable in Fragmente

public class FragmentScanQR extends Fragment { 
    ... 
    private Button qrFromCameraBtn; 
    private View rootView; 
    ... 

public View onCreateView(final LayoutInflater inflater, final ViewGroup container, Bundle savedInstanceState) { 
     rootView = inflater.inflate(R.layout.qrsource, container, false); 
     qrFromCameraBtn = (Button)rootView.findViewById(R.id.qrViaCameraBtn); 

     qrFromCameraBtn.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       rootView = inflater.inflate(R.layout.fragmenttab1, container, false); 
      } 
     }); 

     return rootView; 
    } 

Die onCreateView Methode des Fragments gibt einen Wert vom Typ android.view.View. Die onClick Methode der Schaltfläche ändert dieselbe View-Variable. In der Ausgabe, wenn ich auf die Schaltfläche klicke, ändert sich das Layout nicht zu R.layout.fragmenttab1 (was ich erreichen möchte), aber bleibt gleich. Wie kann ich das machen?

+1

gerade aus curiosity..why hinzufügen wollen, das zu tun? Sie können dies erreichen, indem Sie das Fragment ersetzen – AbhayBohra

+0

Wenn meine Antwort unten half, bitte akzeptieren Sie es, danke. –

Antwort

2

Wenn ich verstehe, was Sie brauchen, wollen Sie Ihr erstes Fragment durch ein neues ersetzen. Sie können das tun, etwa so:

//Where Article fragment is your new fragment. 
ArticleFragment newFragment = new ArticleFragment(); 
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); 

// Replace whatever is in the fragment_container view with this fragment, 
// and add the transaction to the back stack so the user can navigate back 
transaction.replace(R.id.fragment_container, newFragment); 
transaction.addToBackStack(null); 

// Commit the transaction 
transaction.commit(); 

Quelle: https://developer.android.com/training/basics/fragments/fragment-ui.html

0

Wenn Sie nur wollen, um das Layout ersetzen, um diesen Link könnte Ihnen helfen. Android - How to dynamically change fragment layout. einfach den folgenden Code auf Verfahren Schaltfläche klicken

qrFromCameraBtn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      RelativeLayout rl = (RelativeLayout) findViewById(R.id.about); 
rl.removeAllViews(); 
rl.addView(View.inflate(myView.getContext(), R.layout.about, null)); 
     } 
    }); 
Verwandte Themen