繁体   English   中英

使用选项卡式活动时,应将代码放在哪里?

[英]Where should I put my code when using a tabbed activity?

使用android中的标签时,我遇到了一个比较烦人的问题。 我不确定它们如何工作,我遇到的问题是知道将代码的逻辑放在哪里。 例如,在第一个选项卡上,我想应用日历,第二个选项卡上载文件,例如,我要将这个逻辑放在哪里,我有3个xml片段,到目前为止,我一直在尝试通过onCreateView对该逻辑进行编码。 如果有人能解释选项卡式活动的工作原理,我将不胜感激,我使用了默认的android设置选项卡式活动,并添加了3个片段。

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

                if(getArguments().getInt(ARG_SECTION_NUMBER)==1) {

                    View rootView = inflater.inflate(R.layout.fragment_message, container, false);

                    return rootView;

                }
else if(getArguments().getInt(ARG_SECTION_NUMBER)==2){
                    View rootView = inflater.inflate(R.layout.fragment_read, container, false);
                    TextView textView= (TextView)rootView.findViewById(R.id.textView_two);
                    textView.setText("Working");

                    return rootView;
                }
else{
                    View rootView = inflater.inflate(R.layout.fragment_calendar, container, false);
                 // would I put my logic here?

                    return rootView;
                }
            }
        }

更新2因此,现在我尝试听按钮按下并在其中一个片段上显示祝酒词,按钮没有响应,也没有出现祝酒词。

public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
// Inflate the layout for this fragment
final View rootView=inflater.inflate(R.layout.fragment_calendar, container, false);

    //final ActionBar actionBar = getSupportActionBar();
    //actionBar.setDisplayHomeAsUpEnabled(false);
    //actionBar.setTitle(null);
    //Toast.makeText(getActivity(),"AKHBKH",Toast.LENGTH_LONG).show();
    Button button1=(Button)rootView.findViewById(R.id.button_test1);
    button1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Log.i("","");
            Toast.makeText(getActivity(),"ddfdf",Toast.LENGTH_LONG).show();
        }
    });

PS我已经在Toast上尝试了所有这些方法getActivity()getActivity()。getApplicationContext()getBaseContext()getContext()

最初创建一个活动MainActivity。 您必须创建3个片段。从FragmentActivity扩展您的活动并实现ActionBar.TabListener

请参阅本教程: http : //www.androidhive.info/2013/10/android-tab-layout-with-swipeable-views-1/

您可以采用三个片段,要实现的所有逻辑应分别位于每个片段中。 使用MainActivity查看所有片段。 在这里,我将分享我的代码。

主要活动

    public class MainActivity extends AppCompatActivity {

private Toolbar toolbar;
private TabLayout tabLayout;
private ViewPager viewPager;



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

    toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    getSupportActionBar().setDisplayHomeAsUpEnabled(true);

    viewPager = (ViewPager) findViewById(R.id.viewpager);
    setupViewPager(viewPager);

    tabLayout = (TabLayout) findViewById(R.id.tabs);
    tabLayout.setupWithViewPager(viewPager);
}


private void setupViewPager(ViewPager viewPager) {
    ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
    adapter.addFragment(new Admin(), "ADMIN");
    adapter.addFragment(new Faculty(), "FACULTY");
    adapter.addFragment(new Student(), "STUDENT");
    viewPager.setAdapter(adapter);
}

//----------------------------------------------------------------------------------------------
class ViewPagerAdapter extends FragmentPagerAdapter {
    private final List<Fragment> mFragmentList = new ArrayList<>();
    private final List<String> mFragmentTitleList = new ArrayList<>();

    public ViewPagerAdapter(FragmentManager manager) {
        super(manager);
    }

    @Override
    public Fragment getItem(int position) {
        return mFragmentList.get(position);
    }

    @Override
    public int getCount() {
        return mFragmentList.size();
    }

    public void addFragment(Fragment fragment, String title) {
        mFragmentList.add(fragment);
        mFragmentTitleList.add(title);
    }

    @Override
    public CharSequence getPageTitle(int position) {
        return mFragmentTitleList.get(position);
    }
}

@Override
public void onBackPressed(){
    //Do Here what ever you want do on back press;

}

}

我将分享以下任何一个片段的代码:Admin

    public class Admin extends Fragment {
EditText aid;
EditText apassword;
Button submit1,changepass;

String id = null, pass = null;
String table = null;


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

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



}

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


    aid=(EditText)rootView.findViewById(R.id.admin_id);
    apassword=(EditText)rootView.findViewById(R.id.admin_password);
    changepass=(Button)rootView.findViewById(R.id.changePass);
    submit1=(Button)rootView.findViewById(R.id.submit1);

    submit1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            submit1();
        }
    });

    changepass.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent in=new Intent(getActivity(),ChangePassword.class);
            startActivity(in);
        }
    });
    // Inflate the layout for this fragment
    return rootView;

    }


//For Admin login Authentication
public void submit1() {
    id = aid.getText().toString();
    pass = apassword.getText().toString();
    Log.d("id", id);
    Log.d("pass", pass);
    table="admin";
   // new ExecuteTask().execute(id, pass, table);
}}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM