问题描述
我正在为 Android 移动计算机创建一个应用程序,该应用程序可以获取扫描的数据并将指定字符转换为另一个字符。它目前的工作方式是,我手动编码要查找和转换的字符:
public String specialWorkFor(String originalData,String codeType ){
String[] targetStr = {"1","2","3"};
String[] replaceStr = {"a","b","c"};
String newData = "";
newData = originalData;
newData = ReplaceText(originalData,targetStr,replaceStr);
return newData;
}
private static String ReplaceText (String originalData,String[] targetStr,String[] replaceStr ){
String newData = "";
String newDataTmp = "";
newData = originalData;
for (int i = 0; i < targetStr.length; i++){
newDataTmp = newData.replace(targetStr[i],replaceStr[i]);
newData = newDataTmp;
}
return newData;
}
这很好用,但理想情况下,我希望有一个界面,我可以在其中输入纯文本字段并使用那里的值来确定要转换的字符。
创建布局后,我尝试这样做:
//Inputs
Context context1 = getApplicationContext();
Activity act1=(Activity)context1;
EditText codein = (EditText) act1.findViewById(R.id.input);
String in = codein.getText().toString();
//Outputs
Context context2 = getApplicationContext();
Activity act2=(Activity)context2;
EditText codeout = (EditText) act2.findViewById(R.id.output);
String out = codeout.getText().toString();
public String specialWorkFor(String originalData,String codeType ){
//String[] targetStr = {in};
//String[] replaceStr = {out};
String newData = "";
newData = originalData;
newData = ReplaceText(originalData,replaceStr);
return newData;
}
我使用的地方:
Context context1 = getApplicationContext();
Activity act1=(Activity)context1;
EditText codein = (EditText) act1.findViewById(R.id.input);
String in = codein.getText().toString();
尝试在空对象引用上调用虚拟方法“android.content.Context android.content.Context.getApplicationContext()”
我不确定从这里去哪里。有什么想法吗?
解决方法
您不能将应用程序上下文转换为活动。 像这样创建类 Storage:
public class Storage {
public static final Storage instance = new Storage();
public String codeIn = "";
public String codeOut = "";
}
向两个编辑文本添加一个 textWatcher,并在 ontextchanged 中添加:
Storage.instance.codeIn = whatever is in coresponding edittext
在服务内部,您可以通过相同的方式获取这些值:
String in = Storage.instance.codeIn
另请注意,这些值必须在服务使用它们之前设置)))