java - Android Studio,我的 Activity 转到错误的 Activity

标签 java android firebase

所以我是android开发的新手,我遇到了一个我一直在循环的问题。

我这里有三个 Activity ,它们是用于注册的,我不想实现 ScrollView ,因为它不太好看,所以我把它变成了三个表单 Activity ,

第一个 Activity 从 XML 收集所有信息,并通过 Intent 将值传递给第二个 Activity , 然后第二个 Activity 从它自己的 XML 中收集所有信息,然后将其与第一个 Activity 的 Extra 一起传递给第三个 Activity ,第三个 Activity 连同第一个和第二个 Extras 加上它自己的 XML 中的值,最后,将值保存到 firebase。

是的,值已保存,但我的问题是第三个 Activity 没有进入按其 Intent 编写的欢迎类。我尝试过重建和清理,但没有成功。我找不到工作中的错误,有人可以帮助我吗?任何帮助表示赞赏。谢谢

这是我的三个 java 类,如果您可能需要,我还将放入欢迎类:

Profile.java

public class Profile extends Activity {

    //DECLARE FIELDS

    EditText name,username, phone, age, birth;
    Button  saveBtn;

    //FIREBASE REF
    DatabaseReference userRef;


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



        //FIREBASE DATABASE REF
        userRef = FirebaseDatabase.getInstance().getReference("Users");

        //ASSIGN ID's
        saveBtn = (Button) findViewById(R.id.profileBtn);
        name = (EditText) findViewById(R.id.profileName);
        username = (EditText) findViewById(R.id.profileUsername);
        age = (EditText) findViewById(R.id.profileAge);
        phone = (EditText) findViewById(R.id.profilePhone);
        birth = (EditText) findViewById(R.id.profileBirth);


        // SAVE BUTTON LOGIC

       saveBtn.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View view) {

                addUser();

            }
        });
    }

    private void addUser(){


        String userNameString = name.getText().toString();
        String userPhoneString  = phone.getText().toString();
        String userAgeString  = age.getText().toString();
        String userBirthString = birth.getText().toString();
        String userUserNameString = username.getText().toString();

        //GET USER KEY  FROM INTENT
        String userKey = getIntent().getStringExtra("USER_KEY");
        String userEmail = getIntent().getStringExtra("USER_EMAIL");
        String userPass = getIntent().getStringExtra("USER_PASS");
        String userID = getIntent().getStringExtra("USER_ID");



        if (!TextUtils.isEmpty(userNameString) && !TextUtils.isEmpty(userPhoneString) && !TextUtils.isEmpty(userAgeString) && !TextUtils.isEmpty(userBirthString) && !TextUtils.isEmpty(userUserNameString)) {




            Toast.makeText(Profile.this, "Next!", Toast.LENGTH_LONG).show();
            Intent myIntent  = new Intent(Profile.this, Profile2.class);
            myIntent.putExtra("USER_KEY", userKey);
            myIntent.putExtra("USER_NAME", userNameString);
            myIntent.putExtra("USER_PHONE", userPhoneString);
            myIntent.putExtra("USER_AGE", userAgeString);
            myIntent.putExtra("USER_BIRTH", userBirthString);
            myIntent.putExtra("USER_USERNAME", userUserNameString);
            myIntent.putExtra("USER_EMAIL", userEmail);
            myIntent.putExtra("USER_PASS", userPass);
            myIntent.putExtra("USER_ID", userID);

            startActivity(myIntent);

        } else {
            Toast.makeText(Profile.this, "Please Enter Correct Profile Details!", Toast.LENGTH_LONG).show();
            startActivity(new Intent(Profile.this, Profile.class));

        }
    }

}

Profile2.java

public class Profile2 extends Activity {

    //DECLARE FIELDS

    EditText Address, FSN, bType, Height, Weight;
    Button saveBtn;

    //FIREBASE REF
    DatabaseReference userRef;



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



        //FIREBASE DATABASE REF
        userRef = FirebaseDatabase.getInstance().getReference("Users");







        //ASSIGN ID's
        saveBtn = (Button) findViewById(R.id.profileBtn);
        Address = (EditText) findViewById(R.id.Address);
        FSN = (EditText) findViewById(R.id.FSN);
        bType = (EditText) findViewById(R.id.bType);
        Height = (EditText) findViewById(R.id.Height);
        Weight = (EditText) findViewById(R.id.Weight);


        //MOVE TO LOGIN




        // SAVE BUTTON LOGIC

        saveBtn.setOnClickListener(new View.OnClickListener() {
            // @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)
            @Override
            public void onClick(View view) {

                addUser();
            }
        });
    }

    private void addUser(){





        String AddressString = Address.getText().toString();
        String FSNString  = FSN.getText().toString();
        String WeightString = Weight.getText().toString();
        String bTypeString  = bType.getText().toString();
        String HeightString = Height.getText().toString();

        //GET USER KEY  FROM INTENT
        String userKey = getIntent().getStringExtra("USER_KEY");
        String userNameString = getIntent().getStringExtra("USER_NAME");
        String userPhoneString = getIntent().getStringExtra("USER_PHONE");
        String userAgeString = getIntent().getStringExtra("USER_AGE");
        String userBirthString = getIntent().getStringExtra("USER_BIRTH");
        String userUserNameString = getIntent().getStringExtra("USER_USERNAME");
        String userPass = getIntent().getStringExtra("USER_PASS");
        String userID = getIntent().getStringExtra("USER_ID");
        String userEmail = getIntent().getStringExtra("USER_EMAIL");








        if (!TextUtils.isEmpty(AddressString) && !TextUtils.isEmpty(FSNString) && !TextUtils.isEmpty(WeightString) && !TextUtils.isEmpty(bTypeString) && !TextUtils.isEmpty(HeightString)) {



            Toast.makeText(Profile2.this, "Go mamshie!", Toast.LENGTH_LONG).show();

            Intent myIntent2  = new Intent(Profile2.this, Profile3.class);
            myIntent2.putExtra("USER_KEY", userKey);
            myIntent2.putExtra("USER_NAME", userNameString);
            myIntent2.putExtra("USER_PHONE", userPhoneString);
            myIntent2.putExtra("USER_AGE", userAgeString);
            myIntent2.putExtra("USER_BIRTH", userBirthString);
            myIntent2.putExtra("USER_USERNAME", userUserNameString);
            myIntent2.putExtra("USER_ADDRESS", AddressString);
            myIntent2.putExtra("USER_FSN", FSNString);
            myIntent2.putExtra("USER_BTYPE", bTypeString);
            myIntent2.putExtra("USER_HEIGHT", HeightString);
            myIntent2.putExtra("USER_WEIGHT", WeightString);
            myIntent2.putExtra("USER_PASS", userPass);
            myIntent2.putExtra("USER_ID", userID);
            myIntent2.putExtra("USER_EMAIL", userEmail);
            startActivity(myIntent2);


        } else {
            Toast.makeText(Profile2.this, "Please Enter Correct Profile Details!", Toast.LENGTH_LONG).show();
            startActivity(new Intent(Profile2.this, Profile2.class));

        }
    }

}

Profile3.java

public class Profile3 extends Activity {

    //DECLARE FIELDS

    EditText NPP, PCS, MC, SB, PPH;
    Button saveBtn;

    //FIREBASE REF
    DatabaseReference mDataRef, userRef;




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



        //FIREBASE DATABASE REF
        userRef = FirebaseDatabase.getInstance().getReference("Users");




        //ASSIGN ID's
        saveBtn = (Button) findViewById(R.id.profileBtn);
        NPP = (EditText) findViewById(R.id.previous);
        PCS = (EditText) findViewById(R.id.previouscs);
        MC = (EditText) findViewById(R.id.miscar);
        SB = (EditText) findViewById(R.id.stillbirth);
        PPH = (EditText) findViewById(R.id.post);


        //MOVE TO LOGIN




        // SAVE BUTTON LOGIC

        saveBtn.setOnClickListener(new View.OnClickListener() {
            // @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)
            @Override
            public void onClick(View view) {

                addUser();
            }
        });
    }

    private void addUser(){





        String NoPrevPregnancies = NPP.getText().toString();
        String PreviousCS  = PCS.getText().toString();
        String Miscarriages = MC.getText().toString();
        String Stillbirth  = SB.getText().toString();
        String PostPartumHem = PPH.getText().toString();

        //GET USER KEY  FROM INTENT
        String userKey = getIntent().getStringExtra("USER_KEY");
        String userEmail = getIntent().getStringExtra("USER_EMAIL");
        String userPass = getIntent().getStringExtra("USER_PASSWORD");
        String userID = getIntent().getStringExtra("USER_ID");
        String userNameString = getIntent().getStringExtra("USER_NAME");
        String userPhoneString = getIntent().getStringExtra("USER_PHONE");
        String userAgeString = getIntent().getStringExtra("USER_AGE");
        String userBirthString = getIntent().getStringExtra("USER_BIRTH");
        String userUserNameString = getIntent().getStringExtra("USER_USERNAME");
        String AddressString = getIntent().getStringExtra("USER_ADDRESS");
        String FSNString = getIntent().getStringExtra("USER_FSN");
        String bTypeString = getIntent().getStringExtra("USER_BTYPE");
        String HeightString = getIntent().getStringExtra("USER_HEIGHT");
        String WeightString = getIntent().getStringExtra("USER_WEIGHT");


        mDataRef = userRef.child(userNameString);






        if (!TextUtils.isEmpty(PreviousCS) && !TextUtils.isEmpty(NoPrevPregnancies) && !TextUtils.isEmpty(PostPartumHem) && !TextUtils.isEmpty(Miscarriages) && !TextUtils.isEmpty(Stillbirth)) {



            User3 user = new User3(PreviousCS, NoPrevPregnancies, PostPartumHem, Miscarriages, Stillbirth);



            userRef.child(userNameString).setValue(user);
            mDataRef.child("USER_KEY").setValue(userKey);
            mDataRef.child("USER_PASS").setValue(userPass);//
            mDataRef.child("USER_ID").setValue(userID);//
            mDataRef.child("USER_NAME").setValue(userNameString);//
            mDataRef.child("USER_PHONE").setValue(userPhoneString);
            mDataRef.child("USER_AGE").setValue(userAgeString);
            mDataRef.child("USER_BIRTH").setValue(userBirthString);
            mDataRef.child("USER_USERNAME").setValue(userUserNameString);//
            mDataRef.child("USER_ADDRESS").setValue(AddressString);
            mDataRef.child("USER_FSN").setValue(FSNString);
            mDataRef.child("USER_BTYPE").setValue(bTypeString);
            mDataRef.child("USER_HEIGHT").setValue(HeightString);
            mDataRef.child("USER_WEIGHT").setValue(WeightString);
            mDataRef.child("USER_EMAIL").setValue(userEmail);//



            Toast.makeText(Profile3.this, "User Details Completed and Saved!", Toast.LENGTH_LONG).show();
            Intent myIntent1  = new Intent(Profile3.this, Welcome.class);

            myIntent1.putExtra("USER_KEY", userKey);
            myIntent1.putExtra("USER_EMAIL", userEmail);
            myIntent1.putExtra("USER_PHONE", userPhoneString);
            myIntent1.putExtra("USER_BIRTH", userBirthString);
            myIntent1.putExtra("USER_USERNAME", userUserNameString);
            myIntent1.putExtra("USER_NAME", userNameString);
            myIntent1.putExtra("USER_AGE", userAgeString);
            myIntent1.putExtra("USER_ID", userID);

            startActivity(myIntent1);



        } else {

            Toast.makeText(Profile3.this, "Please Enter Correct Profile Details!", Toast.LENGTH_LONG).show();
            startActivity(new Intent(Profile3.this, Profile3.class));

        }
    }

}

我的欢迎 Activity 获取一些数据并显示它

public class Welcome extends AppCompatActivity {


    private static final String TAG = "ViewDatabase";
    //ADD FIREBASE STUFF



    //DECLARE FIELDS
    Button outBtn;
    TextView welcome;
    private DatabaseReference myRef, mDataRef, userRef;
    private FirebaseDatabase mFirebaseDatabase;
    private String userIDPassed;
    private String userID;
    private String userKey;
    private DrawerLayout mDrawerLayout;
    private ActionBarDrawerToggle mToggle;




    private ListView mListView;

    //FIREBASE AUTH FIELDS
    private FirebaseAuth nAuth;
    private FirebaseAuth.AuthStateListener nAuthlistener;



    //GET USER KEY  FROM INTENT


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


        //DRAWER LAYOUT
        mDrawerLayout = (DrawerLayout) findViewById(R.id.drawerLayout);
        mToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.string.open, R.string.close);


        //ASSIGN IDS
        outBtn = (Button) findViewById(R.id.logoutBtn);
        welcome = (TextView) findViewById(R.id.WelcomeName);
        mListView = (ListView) findViewById(R.id.listview);


        //ASSIGN INSTANCE
        myRef = FirebaseDatabase.getInstance().getReference().child("Users");
        nAuth = FirebaseAuth.getInstance();
        userRef = FirebaseDatabase.getInstance().getReference("Users");

        FirebaseUser User = nAuth.getCurrentUser();
        userID = User.getUid();

//navigation Drawer
        mDrawerLayout.addDrawerListener(mToggle);
        mToggle.syncState();

        getSupportActionBar().setDisplayHomeAsUpEnabled(true);

        NavigationView mNavigationView = (NavigationView) findViewById(R.id.nav_menu);
        mNavigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener(){
            @Override public boolean onNavigationItemSelected(MenuItem menuItem)
            { switch (menuItem.getItemId())
            {
                case(R.id.nav_account): Intent accountActivity = new Intent(getApplicationContext(), Welcome.class);
                    startActivity(accountActivity);
                    break;

                case(R.id.nav_exercises): Intent accountActivity1 = new Intent(getApplicationContext(), Video.class);
                    startActivity(accountActivity1);
                    break;

                case(R.id.nav_tips): Intent accountActivity2 = new Intent(getApplicationContext(), Image.class);
                    startActivity(accountActivity2);
                    break;

                case(R.id.nav_scheduler): Intent accountActivity3 = new Intent(getApplicationContext(), CalendarActivity.class);
                    startActivity(accountActivity3);
                    break;
                case(R.id.nav_logout): Intent accountActivity4 = new Intent(getApplicationContext(), LoginActivity.class);
                    startActivity(accountActivity4);
                    finish();
                    break;
                case(R.id.nav_settings): Intent accountActivity5 = new Intent(getApplicationContext(), Profile.class);
                    startActivity(accountActivity5);
                    break;
                case(R.id.nav_info): Intent accountActivity6 = new Intent(getApplicationContext(), Info.class);
                    startActivity(accountActivity6);
                    break;
            }
            return true;
            } });

        //Navigation Drawer





        nAuthlistener = new FirebaseAuth.AuthStateListener(){
            @Override
            public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
                FirebaseUser User = firebaseAuth.getCurrentUser();

                if (User != null){


                    Log.d(TAG, "onAuthStateChanged:signed_in:" + User.getUid());
                    Toast.makeText(Welcome.this, "Successfully signed in with: " + User.getEmail(), Toast.LENGTH_LONG).show();


                }else{

                    Log.d(TAG, "onAuthStateChanged:signed_out" + userID);
                    Toast.makeText(Welcome.this, "Successfully signed out.", Toast.LENGTH_LONG).show();
                }


            }

        };




        myRef.addListenerForSingleValueEvent(new ValueEventListener() {

                    @Override
                    public void onDataChange (DataSnapshot dataSnapshot){
                        showData(dataSnapshot);
                    }

                    @Override
                    public void onCancelled (DatabaseError databaseError){

                    }

        });



        outBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                nAuth.signOut();
                finish();
                startActivity(new Intent(Welcome.this, MainActivity.class));
            }
        });
    }

    private void showData(DataSnapshot dataSnapshot) {



        //GET USER KEY  FROM INTENT
        String userKey = getIntent().getStringExtra("USER_KEY");
        String userEmail = getIntent().getStringExtra("USER_EMAIL");
        String  userPhone = getIntent().getStringExtra("USER_PHONE");
        String userBirth = getIntent().getStringExtra("USER_BIRTH");
        String  userUserName = getIntent().getStringExtra("USER_USERNAME");
        String userName = getIntent().getStringExtra("USER_NAME");
        String userAge = getIntent().getStringExtra("USER_AGE");
        String userID = getIntent().getStringExtra("USER_ID");


        mDataRef = userRef.child(userName);




        if (!TextUtils.isEmpty(userKey) && !TextUtils.isEmpty(userEmail) && !TextUtils.isEmpty(userID) && !TextUtils.isEmpty(userBirth) && !TextUtils.isEmpty(userUserName)) {




            for(DataSnapshot ds : dataSnapshot.getChildren()){

                Log.d(TAG, "showData: snapshot: " + ds);
                Log.d(TAG, "showData: snapshot: " + ds.child("Users"));


                //display all info taken


                Log.d(TAG, "showData: USER_NAME: " + userName);
                Log.d(TAG, "showData: USER_AGE: " + userAge);
                Log.d(TAG, "showData: USER_BIRTH: " + userBirth);
                Log.d(TAG, "showData: USER_PHONE: " + userPhone);
                Log.d(TAG, "showData: USER_USERNAME: " + userUserName);

                ArrayList<String> array = new ArrayList<>();
                array.add(userName);
                array.add(userAge);
                array.add(userBirth);
                array.add(userPhone);
                array.add(userUserName);
                ArrayAdapter adapter = new ArrayAdapter<>(this,android.R.layout.simple_list_item_1,array);
                mListView.setAdapter(adapter);

            }


        } else {


        }

    }

    @Override
    protected void onStart() {
        super.onStart();
        nAuth.addAuthStateListener(nAuthlistener);
    }

    @Override
    protected void onStop() {
        super.onStop();
        nAuth.removeAuthStateListener(nAuthlistener);
    }





    //FOR NAVIGATION DRAWER


    @Override
    public boolean onOptionsItemSelected(MenuItem item) {


        if (mToggle.onOptionsItemSelected(item)){
            return true;
        }
        return super.onOptionsItemSelected(item);

    }
    //Navigation Drawer End

}

我做错了什么?把它想象成流动的水,我认为直到最后一次 Activity 为止,值(value)观都流动得很好?

最佳答案

在您的配置文件1中,将 Intent 更改为配置文件,配置文件2例如

Toast.makeText(Profile.this, "请输入正确的个人资料详细信息!", Toast.LENGTH_LONG).show(); startActivity(new Intent(Profile.this, Profile2.class));

对配置文件 2 和配置文件 3 执行相同的操作。

关于java - Android Studio,我的 Activity 转到错误的 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47277250/

相关文章:

java - 实现网格 RecyclerView 的最佳方式,其中项目是方形图像,下面有一些文本

android - Java 以非零退出值 2 完成 - Android Gradle

ios - 没有从 Firebase 控制台获取推送通知

python - AttributeError 'NoneType' 对象没有属性 'upload_from_filename'

java - 在方法签名中有一个最终输入参数是什么意思?

java - 是否可以访问java项目所依赖的所有构建路径jar文件的名称

android - 谷歌云消息 GCM 通过代理

android - Android Gradle构建

javascript - AngularFire 简单登录

java - 无法为 Playframework 导入 com.avaje.ebean.Model