【发布时间】:2022-11-03 13:27:56
【问题描述】:
我是学习 Android Studio 的初学者,英语不好。
我在一个 android 应用程序中有两个 Firebase 项目,并在下面编写这些代码。
FirebaseOptions options1 = new FirebaseOptions.Builder()
.setProjectId("fd-login-20e78")
.setApplicationId("...")
.setApiKey("...")
.build();
FirebaseOptions options2 = new FirebaseOptions.Builder()
.setProjectId("fd-login1-dc1f7")
.setApplicationId("...")
.setApiKey("...")
.build();
FirebaseApp.initializeApp(this , options1, "first");
FirebaseApp.initializeApp(this , options2, "secondary");
FirebaseApp first = FirebaseApp.getInstance("first");
FirebaseApp secondary = FirebaseApp.getInstance("secondary");
它工作得很好,没有任何崩溃。但是当我尝试从其他活动返回 MainActivity 时,它总是崩溃并出现此错误:
引起:java.lang.IllegalStateException:FirebaseApp 名称首先已经存在!
我知道问题的发生是因为 FirebaseApp 再次初始化。当我回到 MainAcitvity 时,我怎么能阻止它?
我曾尝试过这种方法来解决问题,但没有奏效。下面的代码使 App 立即崩溃。错误表明它没有初始化任何东西。
if (FirebaseApp.getApps(this).isEmpty()) {
FirebaseApp.initializeApp(this , options1, "first");
FirebaseApp.initializeApp(this , options2, "secondary");
}
编辑
public class MainActivity extends AppCompatActivity implements View.OnClickListener, RadioGroup.OnCheckedChangeListener {
private TextView tv_register, tv_forget;
private EditText ed_email1, ed_password1;
private Button btn_login;
private RadioGroup radioGroup;
RadioButton rb1, rb2, rb3;
private FirebaseAuth mAuth, mAuth2, mAuth3, login;
SharedPreferences sharedPreferences;
SharedPreferences.Editor editor;
FirebaseApp first,secondary;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv_register = findViewById(R.id.tv_register2);
tv_register.setOnClickListener(this);
tv_forget = findViewById(R.id.tv_forget2);
tv_forget.setOnClickListener(this);
btn_login = findViewById(R.id.btn_login2);
btn_login.setOnClickListener(this);
ed_email1 = findViewById(R.id.ed_email2);
ed_password1 = findViewById(R.id.ed_password2);
rb1 = findViewById(R.id.rb1);
rb2 = findViewById(R.id.rb2);
rb3 = findViewById(R.id.rb3);
radioGroup = findViewById(R.id.radioGroup);
radioGroup.setOnCheckedChangeListener(this);
FirebaseOptions options1 = new FirebaseOptions.Builder()
.setProjectId("fd-login-20e78")
.setApplicationId("...")
.setApiKey("...")
.build();
FirebaseOptions options2 = new FirebaseOptions.Builder()
.setProjectId("fd-login1-dc1f7")
.setApplicationId("...")
.setApiKey("...")
.build();
FirebaseApp.initializeApp(this , options1, "first");
FirebaseApp.initializeApp(this , options2, "secondary");
first = FirebaseApp.getInstance("first");
secondary = FirebaseApp.getInstance("secondary");
mAuth = FirebaseAuth.getInstance(first);
mAuth2 = FirebaseAuth.getInstance(secondary);
}
【问题讨论】:
-
你如何回到 MainActivity?使用意图?
-
是的。我使用 Intent 回到 MainActivity。