2016-12-22 1 views
0

Android 앱을 만들고 있습니다. 그것은 두 가지 활동을 포함합니다. 하나는 로그인 용이고 다른 하나는 등록 용입니다. 둘 다 별도의 탭에 있으며 두 번 사이를 스 와이프하여 전환 할 수 있습니다.안드로이드에서 버튼 클릭으로 파편을 전환하는 방법은 무엇입니까?

그러나 로그인이 필요한 경우에는 두 탭의 하단에 버튼이 있습니다. 버튼을 클릭하면 등록 탭으로 이동하고 로그인 탭으로 돌아가려면 다른 버튼으로 이동해야합니다.

어떻게하면 onclick 리스너 이벤트를 사용하여 구현할 수 있습니까?

public static class PlaceholderFragment extends Fragment { 

    /** 
    * The fragment argument representing the section number for this 
    * fragment. 
    */ 
    private static final String ARG_SECTION_NUMBER = "section_number"; 

    public PlaceholderFragment() { 
    } 
    private static final String lTAG = RegisterActivity.class.getSimpleName(); 
    private Button btnLogin; 
    private Button btnLinkToRegister; 
    private EditText linputEmail; 
    private EditText linputPassword; 
    private ProgressDialog lpDialog; 
    private SessionManager lsession; 
    private SQLiteHandler ldb; 
    private static final String rTAG = RegisterActivity.class.getSimpleName(); 
    private Button btnRegister; 
    private Button btnLinkToLogin; 
    private EditText rinputFullName; 
    private EditText rinputEmail; 
    private EditText rinputPassword; 
    private ProgressDialog rpDialog; 
    private SessionManager rsession; 
    private SQLiteHandler rdb; 
    public static Context context; 

    /** 
    * Returns a new instance of this fragment for the given section 
    * number. 
    */ 
    public static PlaceholderFragment newInstance(int sectionNumber) { 
     PlaceholderFragment fragment = new PlaceholderFragment(); 
     Bundle args = new Bundle(); 
     args.putInt(ARG_SECTION_NUMBER, sectionNumber); 
     fragment.setArguments(args); 
     return fragment; 
    } 

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

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

      View rootView = inflater.inflate(R.layout.activity_login, container, false); 
      linputEmail = (EditText) rootView.findViewById(R.id.email); 
      linputPassword = (EditText) rootView.findViewById(R.id.password); 
      btnLogin = (Button) rootView.findViewById(R.id.btnLogin); 
      btnLinkToRegister = (Button) rootView.findViewById(R.id.btnLinkToRegisterScreen); 

      // Progress dialog 
      lpDialog = new ProgressDialog(getActivity()); 
      lpDialog.setCancelable(false); 

      // SQLite database handler 
      context=getContext(); 
      ldb = new SQLiteHandler(context); 

      // Session manager 
      lsession = new SessionManager(context); 

      // Check if user is already logged in or not 
      if (lsession.isLoggedIn()) { 
       // User is already logged in. Take him to main activity 
       Intent intent = new Intent(context, MainActivity.class); 
       startActivity(intent); 
       getActivity().finish(); 
      } 

      // Login button Click Event 
      btnLogin.setOnClickListener(new View.OnClickListener() { 

       public void onClick(View view) { 
        String email = linputEmail.getText().toString().trim(); 
        String password = linputPassword.getText().toString().trim(); 


        // Check for empty data in the form 
        if (!email.isEmpty() && !password.isEmpty()) { 
         // login user 
         checkLogin(email, password); 
        } else { 
         // Prompt user to enter credentials 
         Toast.makeText(context, 
           "Please enter the credentials!", Toast.LENGTH_LONG) 
           .show(); 
        } 
       } 

      }); 

      // Link to Register Screen 
      btnLinkToRegister.setOnClickListener(new View.OnClickListener() { 

       public void onClick(View view) { 

        Intent i = new Intent(context, 
          RegisterActivity.class); 
        startActivity(i); 
        getActivity().finish(); 
       } 
      }); 
      return rootView; 
     } 

     else if (getArguments().getInt(ARG_SECTION_NUMBER)==2){ 

      View rootView = inflater.inflate(R.layout.activity_register, container, false); 
      rinputFullName = (EditText) rootView.findViewById(R.id.name); 
      rinputEmail = (EditText) rootView.findViewById(R.id.email); 
      rinputPassword = (EditText) rootView.findViewById(R.id.password); 
      btnRegister = (Button) rootView.findViewById(R.id.btnRegister); 
      btnLinkToLogin = (Button) rootView.findViewById(R.id.btnLinkToLoginScreen); 

      // Progress dialog 
      rpDialog = new ProgressDialog(getActivity()); 
      rpDialog.setCancelable(false); 

      // Session manager 
      context=getContext(); 
      rsession = new SessionManager(context); 

      // SQLite database handler 
      rdb = new SQLiteHandler(context); 

      // Check if user is already logged in or not 
      if (rsession.isLoggedIn()) { 
       // User is already logged in. Take him to main activity 
       Intent intent = new Intent(context, 
         MainActivity.class); 
       startActivity(intent); 
       getActivity().finish(); 
      } 

      // Register Button Click event 
      btnRegister.setOnClickListener(new View.OnClickListener() { 
       public void onClick(View view) { 
        String name = rinputFullName.getText().toString().trim(); 
        String email = rinputEmail.getText().toString().trim(); 
        String password = rinputPassword.getText().toString().trim(); 

      if (!name.isEmpty() && !email.isEmpty() && !password.isEmpty()) { 
         if(isEmailValid(email)) { 
          registerUser(name, email, password); 
         }else{ 
          Toast.makeText(context, 
            "Please enter valid email!", Toast.LENGTH_LONG) 
            .show(); 
         } 
        } else { 
         Toast.makeText(context, 
           "Please enter your details!", Toast.LENGTH_LONG) 
           .show(); 
        } 
       } 
      }); 

      // Link to Login Screen 
      btnLinkToLogin.setOnClickListener(new View.OnClickListener() { 

       public void onClick(View view) { 
        Intent i = new Intent(context, 
          LoginActivity.class); 
        startActivity(i); 
        getActivity().finish(); 
       } 
      }); 

      return rootView; 

     } 
     return null; 
    } 
    `` 
/** 
* A {@link FragmentPagerAdapter} that returns a fragment corresponding to 
* one of the sections/tabs/pages. 
*/ 
public class SectionsPagerAdapter extends FragmentPagerAdapter { 

    public SectionsPagerAdapter(FragmentManager fm) { 
     super(fm); 
    } 

    @Override 
    public Fragment getItem(int position) { 
     // getItem is called to instantiate the fragment for the given page. 
     // Return a PlaceholderFragment (defined as a static inner class below). 
     return PlaceholderFragment.newInstance(position + 1); 
    } 

    @Override 
    public int getCount() { 
     // Show 3 total pages. 
     return 2; 
    } 

    @Override 
    public CharSequence getPageTitle(int position) { 
     switch (position) { 
      case 0: 
       return "LOGIN"; 
      case 1: 
       return "REGISTER"; 

     } 
     return null; 
    } 
} 
+0

에서 버튼을 클릭에

당신이 그렇게 쉬울 것이다 그것을 viewpager 사용하고 내가 너무 코드가있는 경우 – HsRaja

답변

0

이 시나리오에 대한 두 가지 가능성이 있습니다 : -

  1. 당신이 다음 viewpager 대신 FrameLayout이 사용해야하는 다른 조각 한 조각을 전환하려면

    .
  2. framelayout을 사용하는 경우 탭을 스 와이프 할 수 없습니다. 탭을 클릭하여 변경해야합니다.

    framelayout 사용 후 주 활동에서 famelayout ID를 가져올 수 있으며 FragmentTransaction을 사용하여 조각을 전환 할 수 있습니다. 조각

     FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction(); 
        fragmentTransaction.replace(R.id.framelayout, new TwoFragment(), "NewFragment TAG"); 
        fragmentTransaction.addToBackStack(null); 
        fragmentTransaction.commit(); 
    
관련 문제