1

メインのアプリケーションアクティビティからサブアクティビティとして「ログイン」アクティビティを起動する小さなアプリケーションがあります。ログインアクティビティは、EditTextフィールドを使用してユーザー名とパスワードを収集し、送信ボタンをクリックした後、検証のために資格情報をメインアクティビティに送信します。ただし、何らかの理由で、onActivityResult()が機能していません。メソッドのさまざまなポイントで操作して、どこで問題が発生しているかを推測するTextViewを含めようとしましたが、何らかの理由でメソッド自体が実行されていないようです。どんな助けでも大歓迎です。

私の主な活動:

public class MainActivity extends Activity {

private final String userName = "9590778";
private final String userPass = "1234567";

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}

@Override
public boolean onCreateOptionsMenu(Menu menu){
    getMenuInflater().inflate(R.menu.activity_main, menu);
    return true;
}

public void activity_about(View view){
    Intent aboutIntent = new Intent(this, AboutActivity.class);
    startActivity(aboutIntent);
}

public void activity_login(View view){
    Intent loginIntent = new Intent(this, LoginActivity.class);
    startActivityForResult(loginIntent, LoginActivity.LOGIN_REQUEST);
}

public void OnActivityResult(int requestCode, int responseCode, Intent resultIntent){
    String passedUser;
    String passedPass;

    Intent intent = getIntent();

    TextView lblTest = (TextView)findViewById(R.id.lblTest);
    lblTest.setText("ATLEAST THIS IS WORKING!"); //THIS IS WHERE I AM TRYING TO MANIPULATE THE TEXTVIEW TO SEE IF METHOD IS EXECUTING!

    if(requestCode == LoginActivity.LOGIN_REQUEST){

        passedUser = intent.getStringExtra("PASSED_USER");
        passedPass = intent.getStringExtra("PASSED_PASS");

        if(passedUser.equals(userName)){
            if(passedPass.equals(userPass)){
                lblTest.setText("LOGIN SUCCESSFUL!");
            }
        }
        else{
            lblTest.setText("ACCESS DENIED!");
        }
    }
}

}

また、これは私のLoginActivityです。

public class LoginActivity extends Activity {

public static final int LOGIN_REQUEST = 9999;
public static final int LOGIN_RESPONSE = 1234;

private String passedUser;
private String passedPass;

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

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.activity_login, menu);
    return true;
}

public void submitCred(View view){

    Intent intent = getIntent();

    EditText lblUser = (EditText)findViewById(R.id.txtUserName);
    EditText lblPass = (EditText)findViewById(R.id.txtPassword);

    passedUser = lblUser.getText().toString();
    passedPass = lblPass.getText().toString();


    intent.putExtra("PASSED_USER", passedUser);
    intent.putExtra("PASSED_PASS", passedPass);
    setResult(LOGIN_RESPONSE, intent);

    finish();
}
}
4

1 に答える 1

7

タイプミスがあります。必要な関数はonActivityResult, です (小文字の に注意してくださいo)。

オーバーライドするメソッドの前に @Override ステートメントを使用することをお勧めします。あなたのケースで@Override を前に置くと、それはスーパークラスのメソッドOnActivityResultではないと文句を言うでしょう。OnActivityResult

正しい名前と正しいパラメーターがあることを確認するのは良いチェックです。

于 2012-10-25T00:13:34.857 に答える