Java 如何使用onClick方法加载到特定的片段/视图页面?

Java 如何使用onClick方法加载到特定的片段/视图页面?,java,android,android-fragments,android-viewpager,Java,Android,Android Fragments,Android Viewpager,基本上,我有一个叫做ComputerOptions的活动。在ComputerOptions中,您可以单击一些按钮,这些按钮将带您进入选项卡式活动。此TabbedActivity具有包含一组选项的Listview的Different片段。每次我设置意图时,它只会加载Tab1,而不会加载到Tab2。如果单击ComputerOptions上的按钮2,我需要使用什么代码才能加载tab2和TabbedActivity中的片段列表视图?这是代码和图像。正如你所知道的,我是android开发新手,因此任何帮助

基本上,我有一个叫做ComputerOptions的活动。在ComputerOptions中,您可以单击一些按钮,这些按钮将带您进入选项卡式活动。此TabbedActivity具有包含一组选项的Listview的Different片段。每次我设置意图时,它只会加载Tab1,而不会加载到Tab2。如果单击ComputerOptions上的按钮2,我需要使用什么代码才能加载tab2和TabbedActivity中的片段列表视图?这是代码和图像。正如你所知道的,我是android开发新手,因此任何帮助都将不胜感激

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);
            }
        }
    }
    );

}
public类按钮2扩展片段{
公共按钮2(){
//必需的空公共构造函数
}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
返回充气机。充气(R.layout.tab_碎片_2,容器,错误);
}
@凌驾
已创建ActivityState上的公共无效(Bundle savedInstanceState){
super.onActivityCreated(savedInstanceState);
ListView lv=(ListView)getActivity().findViewById(R.id.listView2);
字符串[]值=新字符串[]{“Ex1”、“Ex2”、“Ex3”,
“Ex4”、“Ex5”、“Ex6”、“Ex7”、“Ex8”,
“Ex9”、“Ex10”};
ArrayAdapter=新的ArrayAdapter(getActivity(),
android.R.layout.simple_list_item_1,值);
低压设置适配器(适配器);
//处理正在单击的项目
lv.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
公共虚线单击(AdapterView AdapterView,视图视图,内部位置,长l){
如果(位置==0){
Intent Intent=新的Intent(getContext(),ComputerOptions.class);
星触觉(意向);
}
}
}
);
}
}试试这个:

传递每个按钮上的选项卡位置单击:

Intent intent = new Intent(view.getContext(), TabbedActivity.class);
final Bundle bundle = new Bundle();
bundle.putString("TabNumber", tab_number);
intent.putExtras(bundle);
startActivity(intent);
现在在选项卡活动中:

 //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);
         }
     }

创建意图时,可以在bundle参数中发送页面/片段号,如下所示:

Intent intent = new Intent(view.getContext(), TabbedActivity.class);
intent.putExtra("page_number", 2);  //2 or whatever you want
startActivityForResult(intent, 0);
然后在TabbedActivity onCreate方法中从bundle读取该参数:

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

然后,您在TabbedActivity中就有了所需的起始页面订单号,因此您可以在设置页面适配器的任何位置设置该订单号。

试试这个,对不起,我是在rafsanahmad007的同时输入的,rafsanahmad007也提供了答案。我感谢所有能得到的帮助!我刚才尝试了你的方法,但是在TabbedActivity中.getExtra给了我一个错误。我已经编辑了它(它是getIntExtra()而不是getExtra())