当前位置: 首页 > 知识库问答 >
问题:

从活动到片段的signInWithEmailAndPassword

后星河
2023-03-14

我是Android开发的新手,我在将firebase auth从SignInActivity传递到HomeFragment上有一个问题。代码是这样的

公共类SignInActivity扩展AppCompatActivity

private EditText inputEmail, inputPassword;
private FirebaseAuth auth;
private ProgressBar progressBar;
private Button btnSignIn, btnResetPassword;

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

    //Get Firebase Auth Instance
    auth = FirebaseAuth.getInstance();

    setContentView(R.layout.activity_sign_in);

    inputEmail = (EditText) findViewById(R.id.email);
    inputPassword = (EditText) findViewById(R.id.password);
    progressBar = (ProgressBar) findViewById(R.id.progressBar);
    btnSignIn = (Button) findViewById(R.id.action_sign_in_button);
    btnResetPassword = (Button) findViewById(R.id.intent_reset_password_button);

    btnSignIn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String email = inputEmail.getText().toString();
            final String password = inputPassword.getText().toString();

            if (TextUtils.isEmpty(email)) {
                Toast.makeText(getApplicationContext(), "Enter Email Address", Toast.LENGTH_SHORT).show();
                return;
            }
            if (TextUtils.isEmpty(password)) {
                Toast.makeText(getApplicationContext(), "Enter Password", Toast.LENGTH_SHORT).show();
                return;
            }

            progressBar.setVisibility(View.VISIBLE);

            //Authenticate User
            auth.signInWithEmailAndPassword(email, password)
                    .addOnCompleteListener(SignInActivity.this, new OnCompleteListener<AuthResult>() {
                        @Override
                        public void onComplete(@NonNull Task<AuthResult> task) {
                            // If sign in fails, display a message to the user. If sign in succeeds
                            // the auth state listener will be notified and logic to handle the
                            // signed in user can be handled in the listener.
                            progressBar.setVisibility(View.GONE);
                            if (!task.isSuccessful()) {
                                //There was an Error
                                if (password.length() < 6) {
                                    inputPassword.setError(getString(R.string.minimum_password));
                                } else {
                                    Toast.makeText(SignInActivity.this, getString(R.string.auth_failed), Toast.LENGTH_SHORT).show();
                                }
                            } else {
                                HomeFragment fragment = new HomeFragment();
                                FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
                                transaction.replace(R.id.home_fragment, fragment);
                                transaction.commit();
                            }
                        }
                    });
        }
    });
}

}

这是HomeFragment片段

公共类HomeFragment扩展Fragment{

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

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    return inflater.inflate(R.layout.fragment_home, container, false);
}

}

这是logcat

致命异常:主进程:clouwiko.dev.prasiku,PID:30462 java.lang.runtimeException:clouwiko.dev.prasiku.activity.signinActivity@3039242e必须在clouwiko.dev.prasiku.fragment.homefragment.onattach(homefragment.java:84)在Android.support.v4.app.fragmentManagerimpl.moveTostate(fragmentManager.java:1363)在entTransition.java:1070)在Android.support.v4.app.fragmentTransition.startTransitions(FragmentTransition.java:115)在Android.support.v4.app.fragmentManagerImpl.ExecuteOptoGether(FragmentManager.java:2374)在Android.support.v4.app.fragmentManagerImpl.RemoveredUntAntOperationSandExecute(FragmentManager.java:2332)在00)在Android.os.handler.handleCallback(handler.java:739)在Android.os.handler.dispatchMessage(handler.java:95)在Android.os.handler.dispatchMessage(handler.java:145)在Android.app.activitythread.loop(looper.java:145)在Android.app.activitythread.main(activitythread.java:5942)在java.lang.reflect.Method.invoke(原生方法)在init.main(zygoteinit.java:1195)

我点击登录后应用程序总是崩溃,你能帮帮我吗?谢谢。

共有1个答案

乜昆
2023-03-14

你的问题很清楚:

clouwiko.dev.prasiku.activity.SigninActivity@3039242e必须实现OnFragmentInteractionListener

您需要实现一种到您的片段和活动进行通信的方法。医生解释了你应该怎么做。此外,这个家伙详细解释了你如何做到这一点。

 类似资料:
  • //使用startActivity(intent)也不起作用//无论我做什么,应用程序都会崩溃

  • 我有一个活动和两个片段的包含一个。现在我可以通过实现谷歌的指南回调界面从片段到活动进行通信。但是我如何从活动到片段的另一种方式交流呢?如果活动(外部事件)中发生了什么,我想更新片段。我设法得到了Frag1碎片 但当我在frag上调用公共方法时,我得到了一个IllegalStateException:片段未附加到Activity,可能是因为getItem(0)返回了Frag1的一个新实例,而该实例尚

  • 我已经完成了导航,现在进入第一个片段。在第一个片段中有两个按钮,我需要通过按下这些按钮来切换到一个新的活动。我不明白如何正确地实施它。我犯了一个错误。 代码,eror

  • fragment类主活动/主活动如何限制我的主活动在从片段的最后一页返回到主活动时不返回到片段的最后一页,就像我有一个主活动,单击按钮该主活动会导致另外3个活动,其中一个活动有片段。片段的最后一页指向home activity,但当我在home activity上后退时,它再次将我引导到片段的最后一页,然后我再次按下back按钮,然后我的应用程序关闭

  • 我正在建立一个简单的应用程序,我想从片段回到物理按钮的活动。我该怎么做?我试图杀死碎片,但它不起作用。

  • 我刚开始学Android。我有一个活动类,我想把它重定向到导航栏的ViewPage中的一个片段?我尝试了很多方法,但都不奏效。我希望能帮上忙!!!我的代码:有一个mainactivity.java有一个ViewPager和BottomNavigationView ViewPageApdater类 和Activity类,但我遇到一个问题:java.lang.IllegalArgumentExcept