2016-02-10 2 views
0

Я работаю над Android-студией. Будет создана автоматически созданная страница входа, откуда я хочу поставить намерение начать новую деятельность. Пожалуйста, объясните мне, где я должен использовать это намерение в выше страницы входа, это первое приложение для Android, которое пытается создать. Я хочу создать намерение при нажатии кнопки. * И можем ли мы создать намерение только внутри метода onCreate()? *Android: Где разместить намерение на странице входа

/** 
* A login screen that offers login via email/password. 
*/ 
    public class Login extends AppCompatActivity implements LoaderCallbacks<Cursor> { 

    /** 
* Id to identity READ_CONTACTS permission request. 
*/ 
private static final int REQUEST_READ_CONTACTS = 0; 

/** 
* A dummy authentication store containing known user names and passwords. 
* TODO: remove after connecting to a real authentication system. 
*/ 
private static final String[] DUMMY_CREDENTIALS = new String[]{ 
     "[email protected]:hello", "[email protected]:world" 
}; 
/** 
* Keep track of the login task to ensure we can cancel it if requested. 
*/ 
private UserLoginTask mAuthTask = null; 

// UI references. 
private AutoCompleteTextView mEmailView; 
private EditText mPasswordView; 
private View mProgressView; 
private View mLoginFormView; 

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

    ImageView imageView = (ImageView) findViewById(R.id.login_logo); 
    // Set up the login form. 
    mEmailView = (AutoCompleteTextView) findViewById(R.id.email); 
    populateAutoComplete(); 

    mPasswordView = (EditText) findViewById(R.id.password); 
    mPasswordView.setOnEditorActionListener(new TextView.OnEditorActionListener() { 
     @Override 
     public boolean onEditorAction(TextView textView, int id, KeyEvent keyEvent) { 
      if (id == R.id.password|| id == EditorInfo.IME_NULL) { 
       attemptLogin(); 
       return true; 
      } 
      return false; 
     } 
    }); 

    Button mEmailSignInButton = (Button) findViewById(R.id.email_sign_in_button); 
    mEmailSignInButton.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      attemptLogin(); 
     } 
    }); 

    mLoginFormView = findViewById(R.id.login_form); 
    mProgressView = findViewById(R.id.login_progress); 
} 

private void populateAutoComplete() { 
    if (!mayRequestContacts()) { 
     return; 
    } 

    getLoaderManager().initLoader(0, null, this); 
} 

private boolean mayRequestContacts() { 
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) { 
     return true; 
    } 
    if (checkSelfPermission(READ_CONTACTS) == PackageManager.PERMISSION_GRANTED) { 
     return true; 
    } 
    if (shouldShowRequestPermissionRationale(READ_CONTACTS)) { 
     Snackbar.make(mEmailView, R.string.permission_rationale, Snackbar.LENGTH_INDEFINITE) 
       .setAction(android.R.string.ok, new View.OnClickListener() { 
        @Override 
        @TargetApi(Build.VERSION_CODES.M) 
        public void onClick(View v) { 
         requestPermissions(new String[]{READ_CONTACTS}, REQUEST_READ_CONTACTS); 
        } 
       }); 
    } else { 
     requestPermissions(new String[]{READ_CONTACTS}, REQUEST_READ_CONTACTS); 
    } 
    return false; 
} 

/** 
* Callback received when a permissions request has been completed. 
*/ 
@Override 
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, 
             @NonNull int[] grantResults) { 
    if (requestCode == REQUEST_READ_CONTACTS) { 
     if (grantResults.length == 1 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
      populateAutoComplete(); 
     } 
    } 
} 


/** 
* Attempts to sign in or register the account specified by the login form. 
* If there are form errors (invalid email, missing fields, etc.), the 
* errors are presented and no actual login attempt is made. 
*/ 
private void attemptLogin() { 
    if (mAuthTask != null) { 
     return; 
    } 

    // Reset errors. 
    mEmailView.setError(null); 
    mPasswordView.setError(null); 

    // Store values at the time of the login attempt. 
    String email = mEmailView.getText().toString(); 
    String password = mPasswordView.getText().toString(); 

    boolean cancel = false; 
    View focusView = null; 

    // Check for a valid password, if the user entered one. 
    if (!TextUtils.isEmpty(password) && !isPasswordValid(password)) { 
     mPasswordView.setError(getString(R.string.error_invalid_password)); 
     focusView = mPasswordView; 
     cancel = true; 
    } 

    // Check for a valid email address. 
    if (TextUtils.isEmpty(email)) { 
     mEmailView.setError(getString(R.string.error_field_required)); 
     focusView = mEmailView; 
     cancel = true; 
    } else if (!isEmailValid(email)) { 
     mEmailView.setError(getString(R.string.error_invalid_email)); 
     focusView = mEmailView; 
     cancel = true; 
    } 

    if (cancel) { 
     // There was an error; don't attempt login and focus the first 
     // form field with an error. 
     focusView.requestFocus(); 
    } else { 
     // Show a progress spinner, and kick off a background task to 
     // perform the user login attempt. 
     showProgress(true); 
     mAuthTask = new UserLoginTask(email, password); 
     mAuthTask.execute((Void) null); 
    } 
} 

private boolean isEmailValid(String email) { 
    //TODO: Replace this with your own logic 
    return email.contains("@"); 
} 

private boolean isPasswordValid(String password) { 
    //TODO: Replace this with your own logic 
    return password.length() > 4; 
} 

/** 
* Shows the progress UI and hides the login form. 
*/ 
@TargetApi(Build.VERSION_CODES.HONEYCOMB_MR2) 
private void showProgress(final boolean show) { 
    // On Honeycomb MR2 we have the ViewPropertyAnimator APIs, which allow 
    // for very easy animations. If available, use these APIs to fade-in 
    // the progress spinner. 
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2) { 
     int shortAnimTime = getResources().getInteger(android.R.integer.config_shortAnimTime); 

     mLoginFormView.setVisibility(show ? View.GONE : View.VISIBLE); 
     mLoginFormView.animate().setDuration(shortAnimTime).alpha(
       show ? 0 : 1).setListener(new AnimatorListenerAdapter() { 
      @Override 
      public void onAnimationEnd(Animator animation) { 
       mLoginFormView.setVisibility(show ? View.GONE : View.VISIBLE); 
      } 
     }); 

     mProgressView.setVisibility(show ? View.VISIBLE : View.GONE); 
     mProgressView.animate().setDuration(shortAnimTime).alpha(
       show ? 1 : 0).setListener(new AnimatorListenerAdapter() { 
      @Override 
      public void onAnimationEnd(Animator animation) { 
       mProgressView.setVisibility(show ? View.VISIBLE : View.GONE); 
      } 
     }); 
    } else { 
     // The ViewPropertyAnimator APIs are not available, so simply show 
     // and hide the relevant UI components. 
     mProgressView.setVisibility(show ? View.VISIBLE : View.GONE); 
     mLoginFormView.setVisibility(show ? View.GONE : View.VISIBLE); 
    } 
} 

@Override 
public Loader<Cursor> onCreateLoader(int i, Bundle bundle) { 
    return new CursorLoader(this, 
      // Retrieve data rows for the device user's 'profile' contact. 
      Uri.withAppendedPath(ContactsContract.Profile.CONTENT_URI, 
        ContactsContract.Contacts.Data.CONTENT_DIRECTORY), ProfileQuery.PROJECTION, 

      // Select only email addresses. 
      ContactsContract.Contacts.Data.MIMETYPE + 
        " = ?", new String[]{ContactsContract.CommonDataKinds.Email 
      .CONTENT_ITEM_TYPE}, 

      // Show primary email addresses first. Note that there won't be 
      // a primary email address if the user hasn't specified one. 
      ContactsContract.Contacts.Data.IS_PRIMARY + " DESC"); 
} 

@Override 
public void onLoadFinished(Loader<Cursor> cursorLoader, Cursor cursor) { 
    List<String> emails = new ArrayList<>(); 
    cursor.moveToFirst(); 
    while (!cursor.isAfterLast()) { 
     emails.add(cursor.getString(ProfileQuery.ADDRESS)); 
     cursor.moveToNext(); 
    } 

    addEmailsToAutoComplete(emails); 
} 

@Override 
public void onLoaderReset(Loader<Cursor> cursorLoader) { 

} 

private void addEmailsToAutoComplete(List<String> emailAddressCollection) { 
    //Create adapter to tell the AutoCompleteTextView what to show in its dropdown list. 
    ArrayAdapter<String> adapter = 
      new ArrayAdapter<>(Login.this, 
        android.R.layout.simple_dropdown_item_1line, emailAddressCollection); 

    mEmailView.setAdapter(adapter); 
} 


private interface ProfileQuery { 
    String[] PROJECTION = { 
      ContactsContract.CommonDataKinds.Email.ADDRESS, 
      ContactsContract.CommonDataKinds.Email.IS_PRIMARY, 
    }; 

    int ADDRESS = 0; 
    int IS_PRIMARY = 1; 
} 

/** 
* Represents an asynchronous login/registration task used to authenticate 
* the user. 
*/ 
public class UserLoginTask extends AsyncTask<Void, Void, Boolean> { 

    private final String mEmail; 
    private final String mPassword; 

    UserLoginTask(String email, String password) { 
     mEmail = email; 
     mPassword = password; 
    } 

    @Override 
    protected Boolean doInBackground(Void... params) { 
     // TODO: attempt authentication against a network service. 

     try { 
      // Simulate network access. 
      Thread.sleep(2000); 
     } catch (InterruptedException e) { 
      return false; 
     } 

     for (String credential : DUMMY_CREDENTIALS) { 
      String[] pieces = credential.split(":"); 
      if (pieces[0].equals(mEmail)) { 
       // Account exists, return true if the password matches. 
       return pieces[1].equals(mPassword); 
      } 
     } 

     // TODO: register the new account here. 
     return true; 
    } 

    @Override 
    protected void onPostExecute(final Boolean success) { 
     mAuthTask = null; 
     showProgress(false); 

     if (success) { 

      if (mEmailView.getText().toString().equals("[email protected]") && mPasswordView.getText().toString().equals("admin123")) { 
       Toast.makeText(getApplicationContext(), "Logged In Success", Toast.LENGTH_SHORT).show(); 
       Intent intent = new Intent("csimplifyit.mobileapp.myschool.login.Menu"); 
       startActivity(intent); 
      } 
      //finish(); 
     } else { 
      mPasswordView.setError(getString(R.string.error_incorrect_password)); 
      mPasswordView.requestFocus(); 
     } 
    } 

    @Override 
    protected void onCancelled() { 
     mAuthTask = null; 
     showProgress(false); 
    } 
} 

}

Вот цель я хочу использовать в этом генерируется автоматически Логин (Android Studio).

if (mEmailView.getText().toString().equals("[email protected]") && mPasswordView.getText().toString().equals("admin123")) { 
       Toast.makeText(getApplicationContext(), "Logged In Success", Toast.LENGTH_SHORT).show(); 
       Intent intent = new Intent("csimplifyit.mobileapp.myschool.login.Menu"); 
       startActivity(intent); 
      } 
+1

, когда вы хотите запустить намерение? Быть конкретной. – Ritesh

+0

Пожалуйста, уточните, что вы хотите? –

+0

@Rob, я вижу, что вы уже добавили startActivity к onPostExecute. Так в чем ваш вопрос? Если он не работает так, как вы ожидаете, добавьте описание проблемы к вопросу: что вы ожидаете, что вы видите вместо этого. Если есть ошибки, включите полный журнал ошибок и укажите соответствующие строки в исходном коде, – Gavriel

ответ

0

Flow должен быть таким:

  1. экрана выплеска (доли секунды)
  2. Войти Страница (на успех вызова Homescreen деятельности)
  3. HomeScreen активность

Если вы не хотите каждый раз запрашивать логин пользователя при запуске приложения, а затем сохраняйте данные пользователя в . ces нравится userId. На экране заставки проверьте, что пользователь пуст или нет, если он пуст, а затем перейдите к HomeScreen или LoginScreen.

Смежные вопросы