1
onActiviResult 함수에 문제가 있습니다. 코드가 컴파일되고 에뮬레이트되지만 data 매개 변수는 null을 반환합니다. 주요 기능에서onActivityResult - 데이터 문자열이 null을 반환합니다.
:
private static String sActualLogin = "admin";
private static String sActualPassword = "qwerty";
(...)
public void setRegisterOnClick(View v)
{
Intent intentLOGIN = new Intent(this, Users.class);
intentLOGIN.putExtra("Type",1);
startActivityForResult(intentLOGIN, 1);
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(data.getExtras().containsKey("Login")){
if(resultCode==RESULT_OK && requestCode==1){
String sContainer = data.getStringExtra("Login");
sActualLogin=sContainer;
RESULT1.setText(sActualLogin);
}
}
if(data.getExtras().containsKey("Password")){
if(resultCode==RESULT_OK && requestCode==1){
String sContainer=data.getStringExtra("Password");
sActualPassword=sContainer;
RESULT2.setText(sActualPassword);
}
}
}
그리고 코드는 사용자로 이동 :
package com.example.login;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
public class Users extends Activity {
private EditText etNewLogin;
private EditText etNewPassword;
private TextView RESULT3;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.users);
etNewLogin = (EditText) findViewById(R.id.etChangeLogin);
etNewLogin = (EditText) findViewById(R.id.etChangePassword);
RESULT3 = (TextView) findViewById(R.id.RESULT3);
Intent Intent2=getIntent();
int number = Intent2.getIntExtra("Type", 0);
RESULT3.setText("" +number); //returns 1 well
}
public void giveResponse(View v)
{
Intent intent = getIntent();
int iOperation = intent.getIntExtra("Type", 0);
if (iOperation == 1){
String sNewLogin = etNewLogin.getText().toString();
intent.putExtra("Login", sNewLogin);
setResult(RESULT_OK, intent);
finish();
}
if (iOperation == 2){
String sNewPassword = etNewPassword.getText().toString();
intent.putExtra("Password", sNewPassword);
setResult(RESULT_OK, intent);
finish();
}
}
}
그래서 내가 sActualLogin가 ""onActivityResult를 한 후 설정되고있다. 이 문제를 도와주세요. 뭔가 잘못된 것이고 나는 그것을 볼 수 없습니다.
? 또한 어떤 데이터가 의도 내부로 전달되는지 보려면 중단 점을 사용해 보았습니까? –
GiveReponse는 사용자 활동에 표시된 버튼을 통해 호출됩니다. 그리고 MainActivity -> User in intent에서 데이터를 easly 보낼 수 있습니다. RESULT3 TextView에서 확인하고 있습니다. 하지만 setResult 데이터를 통해 내 정보를 다시 얻으려는 경우 "로그인"레이블 (구조체 내부에 들어가기 때문에)을 사용하지만 문자열에서 데이터를 임시 문자열로 이스케이프 처리하는 동안 sContainter는 null이됩니다. – F1sher
LogCat에서 스택 트레이스를 보여주세요. – Blundell