Skip to content

Commit bdc5843

Browse files
committed
fixbug:all->[demo]->Rjdd-3923->【TF2/DS2】【React Native】进入测试APK,选择print Self Checking测试,切换语言在切换回来,APK 闪退
Rjdd-3924->【TF2/DS2】【React Native】应用缺少单行走纸,多行走纸测试项 Rjdd-3928->【TF2/DS2】【React Native】测试print barCode 条码设置项缺少 解决方案:NA 影响范围:all 关联工单:NA 更新版本:NA
1 parent 1eb9396 commit bdc5843

5 files changed

Lines changed: 81 additions & 5 deletions

File tree

example/android/app/src/main/java/com/printeriminexample/MainActivity.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
package com.printeriminexample;
22

3+
import android.os.Bundle;
4+
5+
import androidx.annotation.NonNull;
6+
37
import com.facebook.react.ReactActivity;
48
import com.facebook.react.ReactActivityDelegate;
59
import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint;
@@ -16,6 +20,11 @@ protected String getMainComponentName() {
1620
return "PrinterIminExample";
1721
}
1822

23+
@Override
24+
protected void onCreate(Bundle savedInstanceState) {
25+
super.onCreate(null);
26+
}
27+
1928
/**
2029
* Returns the instance of the {@link ReactActivityDelegate}. Here we use a util class {@link
2130
* DefaultReactActivityDelegate} which allows you to easily enable Fabric and Concurrent React
@@ -29,4 +38,9 @@ protected ReactActivityDelegate createReactActivityDelegate() {
2938
// If you opted-in for the New Architecture, we enable the Fabric Renderer.
3039
DefaultNewArchitectureEntryPoint.getFabricEnabled());
3140
}
41+
42+
@Override
43+
protected void onSaveInstanceState(@NonNull Bundle outState) {
44+
super.onSaveInstanceState(outState);
45+
}
3246
}

example/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
"react": "18.2.0",
1717
"react-native": "0.72.6",
1818
"react-native-buffer": "^6.0.3",
19+
"react-native-localize": "1.4.0",
1920
"react-native-safe-area-context": "^4.7.3",
2021
"react-native-screens": "^3.29.0",
2122
"react-native-svg": "^13.14.0"

example/src/App.tsx

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,9 @@ import PrinterInfoPage from './views/v2/PrinterInfo';
88
import CashBoxInfoPage from './views/v2/CashBoxInfo';
99
import TransactionPage from './views/v2/Transaction';
1010
import PrintTextPage from './views/v2/PrintText';
11+
import PrintBarCodePage from './views/v2/PrintBarCode';
1112
import HomePage from './views/v1';
13+
import { LanguageProvider, LanguageContext } from './LanguageContext';
1214
const Stack = createNativeStackNavigator();
1315
export default function App() {
1416
const [printerStatus, setPrinterStatus] = React.useState<{
@@ -30,7 +32,10 @@ export default function App() {
3032
console.log('version:', PrinterImin.version);
3133
return (
3234
<Provider>
33-
<NavigationContainer>
35+
<LanguageProvider>
36+
<LanguageContext.Consumer>
37+
{({ language }) => (
38+
<NavigationContainer key={language} >
3439
<Stack.Navigator initialRouteName="Home">
3540
{PrinterImin.version === '2.0.0' ? (
3641
<>
@@ -50,6 +55,7 @@ export default function App() {
5055
<Stack.Screen name="CashBoxInfo" component={CashBoxInfoPage} />
5156
<Stack.Screen name="Transaction" component={TransactionPage} />
5257
<Stack.Screen name="PrintText" component={PrintTextPage} />
58+
<Stack.Screen name="PrintBarCode" component={PrintBarCodePage} />
5359
</>
5460
) : (
5561
<Stack.Screen
@@ -60,6 +66,9 @@ export default function App() {
6066
)}
6167
</Stack.Navigator>
6268
</NavigationContainer>
69+
)}
70+
</LanguageContext.Consumer>
71+
</LanguageProvider>
6372
</Provider>
6473
);
6574
}

example/src/LanguageContext.tsx

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
// src/LanguageContext.tsx
2+
import React, { createContext, useState, useEffect } from 'react';
3+
import * as RNLocalize from 'react-native-localize';
4+
import { AppState, AppStateStatus } from 'react-native';
5+
6+
interface LanguageContextProps {
7+
language: string;
8+
changeLanguage: (lng: string) => void;
9+
}
10+
11+
export const LanguageContext = createContext<LanguageContextProps>({
12+
language: 'en',
13+
changeLanguage: () => {},
14+
});
15+
16+
export const LanguageProvider: React.FC = ({ children }) => {
17+
const [language, setLanguage] = useState(RNLocalize.getLocales()[0].languageCode);
18+
19+
useEffect(() => {
20+
const handleLocalizationChange = () => {
21+
const localization = RNLocalize.getLocales()[0];
22+
setLanguage(localization.languageCode);
23+
};
24+
25+
const handleAppStateChange = (nextAppState: AppStateStatus) => {
26+
if (nextAppState === 'active') {
27+
handleLocalizationChange();
28+
}
29+
};
30+
31+
// 监听应用状态变化
32+
const subscription = AppState.addEventListener('change', handleAppStateChange);
33+
34+
// 初始化时立即执行一次
35+
handleLocalizationChange();
36+
37+
// 清理事件监听器
38+
return () => {
39+
subscription.remove();
40+
};
41+
}, []);
42+
43+
const changeLanguage = (lng: string) => {
44+
setLanguage(lng);
45+
};
46+
47+
return (
48+
<LanguageContext.Provider value={{ language, changeLanguage }}>
49+
{children}
50+
</LanguageContext.Provider>
51+
);
52+
};

example/src/views/v2/PrintText.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ export default function PrintText() {
4141
<TextInput
4242
type="textarea"
4343
value={textValue}
44-
placeholder="Please enter ..."
44+
placeholder="Please enter "
4545
bordered
4646
maxLength={1000}
4747
showWordLimit
@@ -55,7 +55,7 @@ export default function PrintText() {
5555
<TextInput
5656
value={letterSpacing}
5757
onChange={(value) => setLetterSpacing(value)}
58-
placeholder="Please enter ..."
58+
placeholder="Please enter "
5959
textAlign="right"
6060
/>
6161
}
@@ -66,7 +66,7 @@ export default function PrintText() {
6666
<TextInput
6767
value={lineHeight}
6868
onChange={(value) => setLineHeight(value)}
69-
placeholder="Please enter ..."
69+
placeholder="Please enter "
7070
textAlign="right"
7171
/>
7272
}
@@ -77,7 +77,7 @@ export default function PrintText() {
7777
<TextInput
7878
value={fontSize}
7979
onChange={(value) => setFontSize(value)}
80-
placeholder="Please enter ..."
80+
placeholder="Please enter "
8181
textAlign="right"
8282
/>
8383
}

0 commit comments

Comments
 (0)