2

loginActivity後,我的應用程序繼續執行setupActivity,在其中用戶需要輸入他的名字,並且有一個提交按鈕將名稱上傳到firebase,然後應該繼續進行mainActivity,並且這應該只對用戶發生一次。 問題是mSubmitbtn將名稱存儲到數據庫,但不會繼續執行mainActivity,並且setupActivity會再次彈出。如何在setupActivity之後進行mainActivity?

public class SetupActivity extends AppCompatActivity { 
private EditText mNameField; 
private Button mSubmitBtn; 
private DatabaseReference mDatabaseUsers; 
private FirebaseAuth mAuth; 
private ProgressDialog mProgress; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_setup); 
    mNameField = (EditText) findViewById(R.id.setupNameField); 
    mSubmitBtn = (Button) findViewById(R.id.setupSubmitBtn); 
    mProgress = new ProgressDialog(this); 
    mDatabaseUsers = FirebaseDatabase.getInstance().getReference().child("Users"); 
    mAuth = FirebaseAuth.getInstance(); 


    mSubmitBtn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      startSetupAccount(); 
     } 
    }); 
} 


private void startSetupAccount() { 

    final String user_id = mAuth.getCurrentUser().getUid(); 

    final String name = mNameField.getText().toString().trim(); 

    if (!TextUtils.isEmpty(name)) { 

     mProgress.setMessage("Finishing setup."); 
     mProgress.show(); 


     mDatabaseUsers.child(user_id).child("name").setValue(name); 


     mProgress.dismiss(); 

     Intent mainIntent = new Intent(SetupActivity.this, MainActivity.class); 
     mainIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
     startActivity(mainIntent); 
    } 
    } 

@Override 
public void onBackPressed() { 
    moveTaskToBack(true); 
} 
+1

也許,覆蓋的onPause(或onresult或的onStop由你)功能,以從那裏開始呼叫的主要活動。 – koksalb

+0

@koksalb對不起,我是新來的Android教程製作應用程序,你可以幫助一些代碼示例? –

回答

3

坐落在共享偏好,保持的應用程序是否在其第一次運行或不跟蹤的值。這可能去onCreateonStart

SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this); 
boolean isFirstRun = sharedPreferences.getBoolean("isFirstRun", true); 

if (isFirstRun) { 
    //Set value to false, so does not repeat 
    sharedPreferences.edit().putBoolean("isFirstRun", false); 
    //show login activity 
    startActivity(new Intent(MainActivity.this, LoginActivity.class), REQUEST_FIRST_LAUNCH); 
} 
+0

我認爲這不是一個很好的登錄功能解決方案。 –

+1

不錯,但是這是一個登錄活動,所以有必要讓它不僅運行在第一次運行。 –

+0

我同意阿維在這裏。擁有默認的共享偏好是非常有用的。例如當用戶進行註銷時,您可以再次將其分配給true以允許下次登錄活動。你應該跟蹤其他問題,但這肯定不是一個壞方法! – koksalb

相關問題