2017-01-06 4 views
1

Grundsätzlich habe ich eine Aktivität namens ComputerOptions. In ComputerOptions gibt es Schaltflächen, auf die Sie klicken können, um zu einer Aktivität mit Registerkarten zu gelangen. Diese TabbedActivity enthält verschiedene Fragmente, die die Listview für eine Reihe von Optionen enthalten. Jedes Mal, wenn ich die Absicht festlege, wird nur Tab1 geladen und nicht in Tab2 geladen. Welchen Code muss ich verwenden? Wenn ich also auf Button2 auf ComputerOptions klicke, wird tab2 und die ListView-Fragmente in TabbedActivity geladen? Hier ist der Code und das Bild. Wie Sie sehen können, bin ich neu in Android-Entwicklung, so würde jede Hilfe geschätzt werden.Wie lade ich mit einer onClick-Methode in einen bestimmten Fragment/Viewpager?

ComputerOptions.java

public class ComputerOptions extends AppCompatActivity { 

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



    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    TextView toolTitle = (TextView) findViewById(R.id.toolbar_title); 
    toolTitle.setText("Computer"); 
    toolTitle.setTextColor(Color.parseColor("#FFFFFF")); 
    setSupportActionBar(toolbar); 


    // add back arrow to toolbar_layout 
    if (getSupportActionBar() != null){ 
     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
     getSupportActionBar().setDisplayShowHomeEnabled(true); 
    } 

} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // handle arrow click here 
    if (item.getItemId() == android.R.id.home) { 
     finish(); // close this activity and return to preview activity (if there is any) 
    } 
    return super.onOptionsItemSelected(item); 
} 

public void Button1(View view) { 
    Intent intent = new Intent(view.getContext(), TabbedActivity.class); 
    startActivityForResult(intent, 0); 
} 

public void Button2(View view) { 

    /** I think I do something like this in the intent to load tab2 
    Intent i = new Intent(this, TabbedActivity.class); 
    i.putExtra("frgToLoad", 1); 
    // Now start your activity 
    startActivity(i); 
    */ 
} 

}

PageAdapter.java

class PagerAdapter extends FragmentStatePagerAdapter { 
int mNumOfTabs; 

public PagerAdapter(FragmentManager fm, int NumOfTabs) { 
    super(fm); 
    this.mNumOfTabs = NumOfTabs; 
} 

@Override 
public Fragment getItem(int position) { 

    switch (position) { 
     case 0: 
      FragmentOne tab1 = new FragmentOne(); 
      return tab1; 
     case 1: 
      FragmentTwo tab2 = new FragmentTwo(); 
      return tab2; 
     case 2: 
      FragmentThree tab3 = new FragmentThree(); 
      return tab3; 
     case 3: 
      FragmentFour tab4 = new FragmentFour(); 
      return tab4; 
     case 4: 
      FragmentFive tab5 = new FragmentFive(); 
      return tab5; 
     default: 
      return null; 
    } 
} 

@Override 
public int getCount() { 
    return mNumOfTabs; 
} 

}

Button2.java

public class Button2 extends Fragment { 


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


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


    return inflater.inflate(R.layout.tab_fragment_2, container, false); 


} 

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

    ListView lv = (ListView)getActivity().findViewById(R.id.listView2); 


    String[] values = new String[] { "Ex1", "Ex2", "Ex3", 
      "Ex4", "Ex5", "Ex6", "Ex7", "Ex8", 
      "Ex9", "Ex10" }; 
    ArrayAdapter<String> adapter = new ArrayAdapter<>(getActivity(), 
      android.R.layout.simple_list_item_1, values); 

    lv.setAdapter(adapter); 


    // Handles items being clicked 
    lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) { 
      if (position == 0) { 
       Intent intent = new Intent(getContext(), ComputerOptions.class); 
       startActivity(intent); 
      } 
     } 
    } 
    ); 

} 

}

+0

versuchen Sie dies http://stackoverflow.com/questions/15150587/how-to-change-tab-on-button-click-in-android –

Antwort

0

versuchen Sie dies:

Pass Registerkarte Position auf jedem Knopf klicken:

Intent intent = new Intent(view.getContext(), TabbedActivity.class); 
final Bundle bundle = new Bundle(); 
bundle.putString("TabNumber", tab_number); 
intent.putExtras(bundle); 
startActivity(intent); 

jetzt in TabbedActivity:

//get tab number 
    final Intent intent = getIntent(); 
     if (intent.hasExtra("TabNumber")) { 
      String tab = intent.getExtras().getString("TabNumber"); 
      Log.e("TabNumberFriendList",tab); 
      switchToTab(tab); 
     } 
public void switchToTab(String tab){ 
     if(tab.equals("0")){ 
      viewPager.setCurrentItem(0); 
     }else if(tab.equals("1")){ 
      viewPager.setCurrentItem(1); 
     }else if(tab.equals("2")){ 
      viewPager.setCurrentItem(2); 
     } 
    } 
0

Sie könnten Seite/Fragmentnummer in Bündel params senden beim Erstellen von Absicht, wie folgt:

Intent intent = new Intent(view.getContext(), TabbedActivity.class); 
intent.putExtra("page_number", 2); //2 or whatever you want 
startActivityForResult(intent, 0); 

Und dann in TabbedActivity onCreate Methode gelesen, dass param aus Bundle:

int startPage = getIntent().getIntExtra("page_number", 0); 

Dann haben Sie die gewünschte Startseite Bestellnummer innerhalb TabbedActivity, so können Sie es einstellen können, wohin Sie Ihre Pageadapter eingestellt.

+0

Entschuldigung, ich tippte es zur gleichen Zeit wie rafsanahmad007, wer auch vorausgesetzt, die Antwort – daneejela

+0

Nein, Mann, sorry. Ich schätze all die Hilfe, die ich bekommen konnte! Ich habe gerade Ihre Methode ausprobiert, aber in der TabbedActivity gibt mir die .getExtra einen Fehler. – techixo

+0

Ich habe es bearbeiten (es ist getIntExtra() anstelle von getExtra() ..) – daneejela

Verwandte Themen