私はネイティブのAndroidアプリを持っていますが、現在はこれにReact-Nativeの部分があります。Android int値のリアクションネイティブモジュールは、遅れて返されましたか?
要するに、Android/Javaネイティブのリストビューがあります。私が行をタップすると、私はReact-Nativeコードにつながる新しいActivityを開始します。
コンポーネントはAPI呼び出しを行いますが、コードを実行する前にReact Nativeモジュールを経由して、適切なAPIを作成できるようにヘッダーのJava/Android設定のユーザー設定から値を取得しますコール。
ザ・は/actions/index.js
ネイティブAPI呼び出しリアクト:バックネイティブのAndroid/Javaで
export const toggleBlocked = (user_id) =>
async dispatch => {
try {
let headers = await getHeaders();
const response = await fetch('http://my.domain.com/api/get_data?user_id=`${user_id}`', { headers, method: 'GET' });
if (response.status == 200) {
// do stuff
} else {
ToastAndroid.show("Looks like the response wasnt good :(", ToastAndroid.LONG, ToastAndroid.CENTER);
}
} catch (error) {
ToastAndroid.show("An Error Occurred :(", ToastAndroid.LONG, ToastAndroid.CENTER);
}
};
function getHeaders() {
let userId = UserService.getUserId()
console.log("2. React-Native | getHeaders... user_id is " + userId)
return (
new Headers({
Cookie: `abcxyz=${userId}`,
user_id: userId,
"User-Agent": "android",
"Content-Type": "application/json",
charset: "utf-8",
"app-version": "9.1.23",
Accept: "application/json"
})
)
}
を、私は私のモジュールや設定のパッケージを持っています。ここではUserServiceModule.java
:
@ReactMethod
public int getUserId() {
SharedPreferences settings = mContext.getSharedPreferences(Constants.SettingsPreference, Context.MODE_PRIVATE);
int userId = settings.getUserId();
Log.d(TAG, "1. Java/Android code. UserID is " + userId);
return userId;
}
私がコードを実行すると、user_idは常にnullです。私は自分のログが順番に表示されることを期待していました(番号のついたログを参照)。
"1. Java/Android code. UserID is 123"
"2. React-Native | getHeaders... user_id is 123"
洞察力はすばらしいでしょう。ありがとう。
UPDATE /ここSOLUTION が更新され、変更が正しく動作して物事を得ることです:
@ReactMethod
public void getUserId(final Promise promise) {
SharedPreferences settings = mContext.getSharedPreferences(Constants.SettingsPreference, Context.MODE_PRIVATE);
int userId = settings.getUserId();
Log.d(TAG, "1. Java/Android code. UserID is " + userId);
promise.resolve(Integer.toString(userId));
}
ありがとう、私はちょうど正しい方向に私を指摘し、私はちょうど最終コードを含めるために私のポストを更新しました! –