我有一个严重的问题,我有一个刷卡应用程序,它传递所有卡数据投掷xml(我的代码中的xml结构的方式是由sdk提供程序写的)。我需要使用2 EditText(1为卡号,1为ExpDate)进行手动输入,然后将该数据传递给在处理订单的xml中使用的相同活动(或新活动)。可以这样做吗?如何才能做到这一点?以下是我的代码 - 编辑或更正将非常有用...提前谢谢。
String tranXmlFmt =
"<?xml version=\"1.0\"?><TStream>"
+ "<Transaction>"
+ "<IpAddress>66.173.160.125</IpAddress>"
+ "<MerchantID>002649</MerchantID> "
+ "<OperatorID>50</OperatorID>"
+ "<TranType>Credit</TranType>"
+ "<CardType>VISA</CardType> "
+ "<TranCode>Sale</TranCode> "
+ "<OperatorID>55</OperatorID> "
+ "<InvoiceNo>100001</InvoiceNo>"
+ " <RefNo>100001</RefNo> "
+ "<PartialAuth>Allow</PartialAuth>"
+ "<Account>"
+ "<AcctNo>4104891389583005</AcctNo>"
+ "</Account> "
+ "<ExpDate>0214</ExpDate>"
+ "<Amount><Purchase>13.00</Purchase></Amount>"
+ "<UserTraceData>GBTE130116</UserTraceData>"
+ "</Transaction> "
+ "</TStream>";
String initXml = ""
+ "<?xml version=\"1.0\"?>"
+ "<TStream><Admin>"
+ " <MerchantID>002649</MerchantID>"
+ " <TerminalID>002</TerminalID><TranCode>SecureDeviceInit</TranCode>"
+ " <PadType>None</PadType>" + " <TranType>Setup</TranType>"
+ " <SecureDevice>UniMagSecureMagDsi</SecureDevice>"
+ " <ComPort>1</ComPort>"
+ " </Admin>"
+ "</TStream>";
'
帮助
Button btnNextScreen = (Button) findViewById(R.id.btnNextScreen);
//Listening to button event
btnNextScreen.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
//Starting a new Intent
}
});
Button btnInit = (Button) findViewById(R.id.btnInit);
btnInit.setOnClickListener(new View.OnClickListener() {
/**
* initialize epay client
*/
@Override
public void onClick(View v) {
libReady = true;
ca = new ClientActivity(getApplication(), readerType);
Log.d("MAINACTIVITY", "reader type: " + readerType.toString());
initReturn = ca.initialize(initXml);
Log.d("MAINACTIVITY", "init return: " + initXml);
libReady = true;
EditText et = (EditText) findViewById(R.id.editXml);
et.setText(initReturn);
Log.d("MAINACTIVITY", "Library Loaded");
}
});
Button btnClose = (Button) findViewById(R.id.Close_button);
btnClose.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
LineDisplay ld = new LineDisplay();
ld.open(DeviceCommon.DEVICE_MODE_COMMON, null);
ld.clear();
ld.setBacklight(LineDisplay.LCD_BACKLIGHT_OFF);
ld.close();
finish();
}
});
我只需添加2个Edittext并更改要在同一活动中使用的AcctNo和ExpDate STRING。请任何帮助都会很棒。
答案 0 :(得分:1)
您可以从edittext获取数据,并使用意图将其传递给您的第二个活动。
String s1,s2
EditText ed1= (EditText)findViewById(R.id.editext);
EditText ed2= (EditText)findViewById(R.id.editext2);
on Button click
s1 = ed1.getText().toString();
s2 = ed2.getText().toString();
ed1.setText("");
ed2.setText("");
在同一活动中。可以保留上面的其他标签。
String xml ="<AcctNo>"+s1+"</AcctNo>"
+ "<ExpDate>"+s2+"</ExpDate>";
OR
Intent i= new Intent("com.example.secondactivity");
i.putExtra("key1",s1);
i.putExtra("key2",s2);
startActivity(i);
在第二个活动中,您可以检索值。
String value1,value2;
Bundle extras = getIntent().getExtras();
if (extras != null) {
value1 = extras.getString("key1");
value2 = extras.getString("key2");
}
可以保留上面的其他标签。
String xml ="<AcctNo>"+value1+"</AcctNo>"
+ "<ExpDate>"+value2+"</ExpDate>";
编辑:
acitivity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity" >
<EditText
android:id="@+id/editText1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="33dp"
android:ems="10" >
</EditText>
<EditText
android:id="@+id/editText2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="20dp"
android:ems="10" />
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="36dp"
android:text="TextView" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="20dp"
android:text="TextView" />
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="20dp"
android:text="TextView" />
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_gravity="center"
android:layout_marginTop="20dp"
android:text="Button" />
</LinearLayout>
MainActivity
public class MainActivity extends Activity {
EditText ed1,ed2;
TextView tv1,tv2,tv3;
Button b;
String s1;
String s2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ed1= (EditText) findViewById(R.id.editText1);
ed2= (EditText) findViewById(R.id.editText2);
tv1 = (TextView) findViewById(R.id.textView1);
tv2 = (TextView) findViewById(R.id.textView2);
tv3 = (TextView) findViewById(R.id.textView3);
b= (Button) findViewById(R.id.button1);
b.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
s1= ed1.getText().toString();
s2= ed2.getText().toString();
System.out.println("................"+s1);
System.out.println("................"+s2);
tv1.setText(s1);
tv2.setText(s2);
String xml ="<AcctNo>"+s1+"</AcctNo>"
+ "<ExpDate>"+s2+"</ExpDate>";
System.out.println("................"+xml);
tv3.setText(xml);
ed1.setText("");
ed2.setText("");
}
});
}
}
你可以看到它有效。看快照。我有3个文本视图,2个editext和一个按钮。 用户输入editext后,单击按钮,我将值设置为textview。 正如您所看到的,值反映在字符串xml中,这是textview3中的结果集。