2

loginActivityの後、私のアプリはsetupActivityに進み、ユーザーは自分の名前を入力する必要があり、名前をfirebaseにアップロードするsubmitボタンがあり、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

を行くことができます。 – koksalb

+0

@koksalb申し訳ありませんが、私はチュートリアルからアプリを作っていることに新しいです、いくつかのコード例を手伝ってもらえますか? –

答えて

3

。これは、そこからメインの活動のために通話を開始するための機能(あなたにまたははonResultまたはonstopアップ)onpauseをオーバーライドし、多分、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

私はここでAviに同意します。デフォルトの共有設定を使用することは非常に便利です。たとえば、ユーザーがログアウトしたときに、次回のログインアクティビティを許可するために再度trueに割り当てることができます。あなたは他の問題も追跡しなければなりませんが、それは必ずしも悪いアプローチではありません! – koksalb

関連する問題