ログアウト設定が選択されている場合、startActivityForResult が onActivityResult に戻りません。奇妙なことに、REST 呼び出しを使用するように変換する前は、これが機能していたことは確かですが、何が変更されたのかはわかりません。MainOverview アクティビティは設定アクティビティを呼び出します。はい、ここでは重要ではないと思うので、MainOverview の onCreate メソッドは省略されています。MainOverview コードは次のとおりです。
public class MainOverviewActivity extends BaseActivity implements OnClickListener
{
public void onClick(View v)
{
switch(v.getId())
{
case R.id.show_settings:
openSettings();
break;
}
}
public static final String INTENT_RESULT_LOGOUT = "logout";
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
Log.i("MainOverviewActivity", "onActivityResult before finish() :)");
if(requestCode == 123)
{
if(resultCode == Activity.RESULT_OK)
{
if(data.getBooleanExtra(SettingsActivity.INTENT_RESULT_LOGOUT, false))
{
Log.i("MainOverviewActivity", "finish() :)");
Intent i = new Intent(this, LoginActivity.class);
startActivity(i);
finish();
}
}
}
}
protected void openSettings()
{
Intent intent = new Intent(this, SettingsActivity.class);
startActivityForResult(intent, 123);
}
}
これが私の設定アクティビティコードです:
public class SettingsActivity extends PreferenceActivity
{
public static final String INTENT_RESULT_LOGOUT = "logout";
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
Intent returnIntent = new Intent();
returnIntent.putExtra(INTENT_RESULT_LOGOUT, true);
setResult(RESULT_OK, returnIntent);
finish();
}
これが私のsettings.xmlページです。プレビューページで「java.lang.NullPointerException at com.android.layoutlib.bridge.android.BridgeXmlBlockParser.next(BridgeXmlBlockParser.java:301)」を取得していますが、何もありませんアイデア理由:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory android:title="Server account">
<Preference
android:title="Logout"
android:key="logout" />
<Preference
android:title="Version"
android:key="version" />
</PreferenceCategory>
</PreferenceScreen>
MainOverview 内の onResume() には到達しますが、onActivityResult() には到達しません。その理由がわかりません。Resultcode が 0 を超えています。他のいくつかの StackOverflow ページを読みましたが、まだ回答がありません。launchMode をどこにも設定していません。私はアイデアがありません。
私は一週間それに取り組んできましたが、まだ立ち往生しています。
前もって感謝します!
デヴィン