问题描述
我的应用程序有 2 个登录选项,一个是普通 FireBase 电子邮件身份验证,另一个是 Google 登录选项,当我使用电子邮件身份验证从图库中选择图像时,它工作正常,但是当我使用 Google 登录选择它时,该特定活动关闭并返回到我的登录页面
以下是 Fragment 所在活动的代码 -
package com.example.projectcrest.pages;
import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBarDrawerToggle;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import androidx.core.view.GravityCompat;
import androidx.fragment.app.Fragment;
import androidx.navigation.ui.AppBarConfiguration;
import androidx.navigation.NavController;
import androidx.navigation.Navigation;
import androidx.navigation.ui.NavigationUI;
import androidx.drawerlayout.widget.DrawerLayout;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import com.example.projectcrest.ImplementFirebaseActions;
import com.example.projectcrest.R;
import com.example.projectcrest.fragments.auction_add;
import com.example.projectcrest.fragments.auction_list;
import com.example.projectcrest.fragments.home_page;
import com.example.projectcrest.fragments.profile;
import com.google.android.material.bottomnavigation.BottomNavigationView;
import com.google.android.material.navigation.NavigationView;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import org.jetbrains.annotations.NotNull;
public class LandingPage extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {
private FirebaseAuth firebase;
BottomNavigationView bottom_navView;
NavigationView navigationView;
private DrawerLayout drawerLayout;
ImplementFirebaseActions fa;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.landing_page);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
fa = new ImplementFirebaseActions();
firebase = FirebaseAuth.getInstance();
FirebaseUser firebaseUser = FirebaseAuth.getInstance().getCurrentUser();
drawerLayout = findViewById(R.id.landing_page_body_drawerLayout);
navigationView = findViewById(R.id.nav_view);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this,drawerLayout,toolbar,R.string.navigation_drawer_open,R.string.navigation_drawer_close);
drawerLayout.addDrawerListener(toggle);
toggle.syncState();
if (firebaseUser != null) {
String email = firebaseUser.getEmail();
Log.d("Email Is:",email);
}
bottom_navView = findViewById(R.id.bottom_navbar);
bottom_navView.setSelectedItemId(R.id.bottom_navbar_home);
navigationView.setNavigationItemSelectedListener(this);
bottom_navView.setonNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
Fragment fragment = null;
switch (item.getItemId()) {
case R.id.bottom_navbar_home:
fragment = new home_page();
break;
case R.id.bottom_navbar_aucAdd:
fragment = new auction_add();
break;
case R.id.bottom_navbar_aucList:
fragment = new auction_list();
break;
}
getSupportFragmentManager().beginTransaction().replace(R.id.landing_page_fragment_position,fragment).commit();
return true;
}
});
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction().replace(R.id.landing_page_fragment_position,new home_page()).commit();
}
}
@Override
public boolean onNavigationItemSelected(@NonNull @NotNull MenuItem item) {
Toolbar toolbar = findViewById(R.id.toolbar);
switch (item.getItemId()) {
case R.id.side_navbar_profile:
getSupportFragmentManager().beginTransaction().replace(R.id.landing_page_fragment_position,new profile()).commit();
toolbar.setTitle("Profile");
break;
case R.id.side_navbar_logout:
try {
fa.signOut(this);
} catch (Exception e) {
FirebaseAuth.getInstance().signOut();
}
Intent i = new Intent(getApplicationContext(),MainActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivity(i);
break;
}
drawerLayout.closeDrawer(GravityCompat.START);
return true;
}
@Override
public void onBackpressed() {
if (drawerLayout.isDrawerOpen(GravityCompat.START)) {
drawerLayout.closeDrawer(GravityCompat.START);
} else {
super.onBackpressed();
}
}
}
图库选择器所在的片段代码 -
public class auction_add extends Fragment {
FirebaseAuth firebaseAuth;
private static final int SELECT_PICTURE = 10;
private static final int PERMISSION_CODE = 11;
ImageButton auction_add_imageViewButton;
FirebaseStorage storage;
StorageReference storageReference;
//References to all Auction Add Page EditText
EditText auction_add_itemNameTxt;
EditText auction_add_descriptionTxt;
EditText auction_add_initialPriceTxt;
EditText auction_add_startTimeTxt;
EditText auction_add_endTimeTxt;
Button auction_add_submit;
//Reference to ImageView
private ImageView auction_add_image;
final Calendar myCalendar = Calendar.getInstance();
// Todo: Rename parameter arguments,choose names that match
// the fragment initialization parameters,e.g. ARG_ITEM_NUMBER
private static final String ARG_ParaM1 = "param1";
private static final String ARG_ParaM2 = "param2";
// Todo: Rename and change types of parameters
private String mParam1;
private String mParam2;
private Uri imageUri;
public auction_add() {
// required empty public constructor
}
/**
* Use this factory method to create a new instance of
* this fragment using the provided parameters.
*
* @param param1 Parameter 1.
* @param param2 Parameter 2.
* @return A new instance of fragment auction_add.
*/
// Todo: Rename and change types and number of parameters
public static auction_add newInstance(String param1,String param2) {
auction_add fragment = new auction_add();
Bundle args = new Bundle();
args.putString(ARG_ParaM1,param1);
args.putString(ARG_ParaM2,param2);
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
mParam1 = getArguments().getString(ARG_ParaM1);
mParam2 = getArguments().getString(ARG_ParaM2);
}
}
@Override
public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_auction_add,container,false);
auction_add_imageViewButton = v.findViewById(R.id.auction_add_imageView_button);
auction_add_submit = v.findViewById(R.id.auction_add_submit_btn);
auction_add_submit.setonClickListener(new View.OnClickListener() {
@Override
public void onClick(View buttonView) {
imageSelectAction(v);
}
});
auction_add_imageViewButton.setonClickListener(new View.OnClickListener() {
@Override
public void onClick(View buttonView) {
imageSelectAction(v);
}
});
dateTimeAction(v);
return v;
}
private void imageSelectAction(View v) {
auction_add_image = v.findViewById(R.id.auction_add_imageView);
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent,""),SELECT_PICTURE);
}
@Override
public void onActivityResult(int requestCode,int resultCode,@Nullable Intent data) {
super.onActivityResult(requestCode,resultCode,data);
if (resultCode == Activity.RESULT_OK) {
if (requestCode == SELECT_PICTURE) {
if (data != null && data.getData() != null) {
Uri selectedImageUri = data.getData();
auction_add_image.setimageURI(selectedImageUri);
}
}
}
}
private void uploadImage() {
storage = FirebaseStorage.getInstance();
storageReference = storage.getReference();
}
private void dateTimeAction(View v) {
auction_add_startTimeTxt = v.findViewById(R.id.auction_add_startTimePicker);
auction_add_endTimeTxt = v.findViewById(R.id.auction_add_endTimePicker);
auction_add_startTimeTxt.setInputType(InputType.TYPE_NULL);
auction_add_startTimeTxt.setonClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showDateTimeDialog(auction_add_startTimeTxt);
}
});
auction_add_endTimeTxt.setonClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showDateTimeDialog(auction_add_endTimeTxt);
}
});
}
private void showDateTimeDialog(EditText timeTxt) {
final Calendar calendar = Calendar.getInstance();
DatePickerDialog.OnDateSetListener dateSetListener = new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view,int year,int month,int dayOfMonth) {
calendar.set(Calendar.YEAR,year);
calendar.set(Calendar.MONTH,month);
calendar.set(Calendar.DAY_OF_MONTH,dayOfMonth);
TimePickerDialog.OnTimeSetListener timeSetListener = new TimePickerDialog.OnTimeSetListener() {
@RequiresApi(api = Build.VERSION_CODES.N)
@Override
public void onTimeSet(TimePicker view,int hourOfDay,int minute) {
calendar.set(Calendar.HOUR_OF_DAY,hourOfDay);
calendar.set(Calendar.MINUTE,minute);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yy-MM-dd HH:mm");
timeTxt.setText(simpleDateFormat.format(calendar.getTime()));
}
};
new TimePickerDialog(getContext(),timeSetListener,calendar.get(Calendar.HOUR_OF_DAY),calendar.get(Calendar.MINUTE),false).show();
}
};
new DatePickerDialog(getContext(),dateSetListener,calendar.get(Calendar.YEAR),calendar.get(Calendar.MONTH),calendar.get(Calendar.DAY_OF_MONTH)).show();
}
}
编辑1: LogCat 的片段
2021-05-26 01:14:46.513 32497-32497/com.google.android.documentsui E/oid.documentsu: No package ID ff found for ID 0xffffffff.
2021-05-26 01:14:46.617 32497-32497/com.google.android.documentsui E/oid.documentsu: No package ID ff found for ID 0xffffffff.
2021-05-26 01:14:46.687 32497-32497/com.google.android.documentsui E/oid.documentsu: No package ID ff found for ID 0xffffffff.
2021-05-26 01:14:47.444 32497-32497/com.google.android.documentsui E/oid.documentsu: No package ID ff found for ID 0xffffffff.
2021-05-26 01:14:47.669 32497-32497/com.google.android.documentsui E/oid.documentsu: No package ID ff found for ID 0xffffffff.
2021-05-26 01:14:47.891 32497-32497/com.google.android.documentsui E/oid.documentsu: No package ID ff found for ID 0xffffffff.
2021-05-26 01:14:51.683 706-5114/com.android.systemUI E/ndroid.systemu: importBufferImpl:237 Failed with 'Error3::NO_RESOURCES'
2021-05-26 01:14:51.684 706-5114/com.android.systemUI E/GraphicBuffer: unflatten: registerBuffer Failed: UnkNown error -5 (5)
2021-05-26 01:14:51.684 706-4813/com.android.systemUI E/ndroid.systemu: importBufferImpl:237 Failed with 'Error3::NO_RESOURCES'
2021-05-26 01:14:51.684 706-4813/com.android.systemUI E/GraphicBuffer: unflatten: registerBuffer Failed: UnkNown error -5 (5)
2021-05-26 01:14:52.805 1746-1916/com.google.android.googlequicksearchBox E/MDD: DownloadProgressMonitor: Can't find file group for uri: android://com.google.android.googlequicksearchBox/files/sharedminusonemodule/shared/SharedMinusOneData.pb.tmp
2021-05-26 01:15:29.860 492-492/? E/netmgr: qemu_pipe_open_ns:62: Could not connect to the 'pipe:qemud:network' service: Invalid argument
2021-05-26 01:15:29.860 492-492/? E/netmgr: Failed to open QEMU pipe 'qemud:network': Invalid argument
2021-05-26 01:15:38.829 494-494/? E/wifi_forwarder: qemu_pipe_open_ns:62: Could not connect to the 'pipe:qemud:wififorward' service: Invalid argument
2021-05-26 01:15:38.829 494-494/? E/wifi_forwarder: RemoteConnection Failed to initialize: RemoteConnection Failed to open pipe
2021-05-26 01:16:29.922 492-492/? E/netmgr: qemu_pipe_open_ns:62: Could not connect to the 'pipe:qemud:network' service: Invalid argument
2021-05-26 01:16:29.922 492-492/? E/netmgr: Failed to open QEMU pipe 'qemud:network': Invalid argument
2021-05-26 01:16:38.878 494-494/? E/wifi_forwarder: qemu_pipe_open_ns:62: Could not connect to the 'pipe:qemud:wififorward' service: Invalid argument
2021-05-26 01:16:38.878 494-494/? E/wifi_forwarder: RemoteConnection Failed to initialize: RemoteConnection Failed to open pipe
2021-05-26 01:17:29.946 492-492/? E/netmgr: qemu_pipe_open_ns:62: Could not connect to the 'pipe:qemud:network' service: Invalid argument
2021-05-26 01:17:29.946 492-492/? E/netmgr: Failed to open QEMU pipe 'qemud:network': Invalid argument
2021-05-26 01:17:38.880 494-494/? E/wifi_forwarder: qemu_pipe_open_ns:62: Could not connect to the 'pipe:qemud:wififorward' service: Invalid argument
2021-05-26 01:17:38.880 494-494/? E/wifi_forwarder: RemoteConnection Failed to initialize: RemoteConnection Failed to open pipe
2021-05-26 01:18:29.948 492-492/? E/netmgr: qemu_pipe_open_ns:62: Could not connect to the 'pipe:qemud:network' service: Invalid argument
2021-05-26 01:18:29.948 492-492/? E/netmgr: Failed to open QEMU pipe 'qemud:network': Invalid argument
2021-05-26 01:18:38.882 494-494/? E/wifi_forwarder: qemu_pipe_open_ns:62: Could not connect to the 'pipe:qemud:wififorward' service: Invalid argument
2021-05-26 01:18:38.882 494-494/? E/wifi_forwarder: RemoteConnection Failed to initialize: RemoteConnection Failed to open pipe
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)