簡體   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