如何从活动变成碎片

时间:2019-04-10 20:09:21

标签: android

我写了这段代码用于登录和聊天; 登录是一项活动,聊天是一个片段;这是我的活动:

public class Consultant extends AppCompatActivity {


    private FirebaseAuth auth;
    private Button loginbtn;
    private EditText email;
    private EditText pass;

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

        auth = FirebaseAuth.getInstance();

        loginbtn = (Button) findViewById(R.id.loginbtn);
        email = (EditText) findViewById(R.id.email);
        pass = (EditText) findViewById(R.id.pass);

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

    public boolean checkEmailandpassword() {
        if (validate()) {
            String CEmail = email.getText().toString().trim();
            String CPass = pass.getText().toString().trim();

            auth.signInWithEmailAndPassword(CEmail, CPass).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {

                    if (task.isSuccessful()) {
                        Toast.makeText(Consultant.this, "welcome", Toast.LENGTH_LONG).show();
                        Intent i = new Intent(Consultant.this,Consultant_Home_Chatting.class);
                        startActivity(i);
                    } else {
                        Toast.makeText(Consultant.this, "wrong ", Toast.LENGTH_LONG).show();
                    }

                }
            });
        }
        return false;
    }
            private boolean validate() {
                boolean result = false;

                String CPass = pass.getText().toString();
                String CEmail = email.getText().toString();

                if (CPass.isEmpty() || CEmail.isEmpty()) {
                    Toast.makeText(Consultant.this, "all fields required", Toast.LENGTH_LONG).show();
                } else {
                    result = true;
                }

                return result;
            }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_nav, menu);
        return true;
    }
        }

这是我的片段:

   public class Consultant_Home_Chatting extends Fragment {
private ViewPager mViewP ;
private FirebaseAuth mAuth ;
private TabLayout mTab ;
private TabsPagerAdapter mAdapter ;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    return inflater.inflate(R.layout.fragment_consultant__home__chatting, container, false);
}

public  Consultant_Home_Chatting() {

}


@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {

    mAuth = FirebaseAuth.getInstance();
    mViewP = (ViewPager) getView().findViewById(R.id.main_tabs_pager);

    mAdapter = new TabsPagerAdapter(getFragmentManager());
    mViewP.setAdapter(mAdapter);
    mTab = (TabLayout) getView().findViewById(R.id.main_tabs);
    mTab.setupWithViewPager(mViewP);
}

我试图添加一个包含这些留置权的新类,然后在我的片段中创建一个构造函数,并在我的活动中创建onCreatOptions方法,但是它不起作用! 我认为解决方案是使用捆绑包,但我不知道如何使用它,或者我可以使用它,而且我可以在里面寄额外的东西,请帮忙吗?

   if (savedInstanceState == null){
            getFragmentManager().beginTransaction()
                    .add(android.R.id.content, new Consultant_Home_Chatting ()).commit();}

1 个答案:

答案 0 :(得分:0)

要使用包简单,请创建片段的实例,然后创建包,将所需的所有数据添加到该片段中。 这是示例:

活动中:

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

    TestFragment testFragment = new TestFragment();
    Bundle bundle = new Bundle();
    bundle.putString("name", "John");
    bundle.putInt("age", 24);
    testFragment.setArguments(bundle);

    getSupportFragmentManager()
       .beginTransaction()
       .add(R.id.content, testFragment).commit();

}

在您的片段中:

public class TestFragment extends Fragment {

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

    Bundle bundle = getArguments();
    if(bundle != null){
        String name = bundle.getString("name");
        int age =`enter code here` bundle.getInt("age");
    }
  }
}