Android如何使用Edittext更改String并在同一活动中重用

时间:2013-03-27 14:12:02

标签: android xml string credit-card-track-data

我有一个严重的问题,我有一个刷卡应用程序,它传递所有卡数据投掷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。请任何帮助都会很棒。

1 个答案:

答案 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中的结果集。

enter image description here