버튼 (스캔 용)과 webview 구성 요소로 안드로이드 앱을 만들었습니다. button_scan을 누르면 startActivityForResult가 실행되어 zxing 작업을 호출하여 바코드와 QR 코드를 스캔합니다.zxing이 끝나면 onActivityResult를 작성하여 데이터를 처리합니다.다른 버전, onActivityResult라고 불릴 때 활동을 재개 할 수 없습니다.
이 앱은 지금까지 Android V2.2.2에서 정상적으로 작동하며 예외가 발생하지 않습니다.
그러나이 앱이 Android V2.3 또는 V4.0.4에서 실행되면 예외가 발생합니다 (java.lang.RuntimeException : 활동을 재개 할 수 없음). 이 예외는 onActivityResult가 호출 될 때 발생합니다.
나는 시험을 위해 전역 변수 (CURRENTWEBPAGE)을 인쇄에 startActivityForResult를 호출하기 전에, CURRENTWEBPAGE 가치를 가지고 있다는 것을 발견하지만, CURRENTWEBPAGE는 onActivityResult를 호출 후 null의했다.
나는 안드로이드 버전이이 사건에서 중요한지 궁금해. 모든 글로벌 회원이 삭제됩니까?
이 상황을 해결 한 사람이라면 누구나이 문제를 해결할 수있는 해결책을 제공 할 수 있습니까?
필요한 추가 정보가 있으면 언제든지 알려주십시오.
귀하의 회신은 부탁드립니다.
다음은 내 앱 코드입니다.
public class MyApp extends Activity
{
private String CURRENTWEBPAGE;//which will be set value whenvever webview changed.
private WebView webView_main;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
initActivity_web();
...
...
}
public void initActivity_web()
{
// add Listener to button_SCAN
((Button) findViewById(R.id.button_SCAN)).setOnClickListener(new Button.OnClickListener()
{
@Override
public void onClick(View arg0)
{
try
{
Intent intent = new Intent("com.google.zxing.client.android.SCAN");
Log.d(this.getClass().getName(),CURRENTWEBPAGE);
// CURRENTWEBPAGE has value here.
startActivityForResult(intent, 0);
}
catch (android.content.ActivityNotFoundException ex)
{
Toast popup = Toast.makeText(NEOMove.this, "Please install Zxing Barcode Scanner", Toast.LENGTH_SHORT);
popup.show();
}
}
});
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent intent)
{
super.onActivityResult(requestCode, resultCode, intent);
if (requestCode == 0)
{
if (resultCode == RESULT_OK)
{
String QRCodeContent = intent.getStringExtra("SCAN_RESULT");
String newURL = convertToLCMOBILESUPPORTActionUrl(CURRENTWEBPAGE);//exception occur
//because CURRENTWEBPAGE = null;
//java.lang.RuntimeException: Unable to resume activity
webView_main.loadUrl(newURL + QRCodeContent);
}
else if (resultCode == RESULT_CANCELED)
{
// TODO Handle cancel
}
}
}
}
추가 - 2012년 9월 20일
안녕, 나는 부모 응용 프로그램 (내 앱)의에서 onCreate가 onActivityResult를하기 전에 호출됩니다 것을 발견. SharedPreferences에서 이러한 변수를 유지하더라도 MyApp의 웹보기는 새 세션 ID로 다시 작성됩니다. 바코드를 스캔 한 후 파괴 된 웹보기의 캐시에 로그인 한 권한으로 요청을 보내야하므로이 기능은 저에게 적합하지 않습니다. 부모 앱을 삭제하지 못하게 할 방법이 있습니까?
다음은 AndroidManifest.xml입니다.
<activity
android:name=".MyApp"
android:configChanges="orientation|keyboard"
android:label="@string/title_activity_main" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>