2016-02-09 15 views
0

我想在這裏做一個項目,可以掃描條形碼(這是完成),並在此之後,它應該顯示基於該條形碼(產品名稱,地址)的數據庫中的一些值。如何粘貼以前活動的數據?

我設法將條碼中的值複製到剪貼板,但後來我無法將其複製到activity_second.xml的EditText中。

的AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?> 
     <manifest xmlns:android="http://schemas.android.com/apk/res/android" 
      package="br.exemplozxingintegration" 
      android:versionCode="1" 
      android:versionName="1.0"> 

    <uses-sdk 
     android:minSdkVersion="8" 
     android:targetSdkVersion="19" /> 

    <uses-permission android:name="android.permission.CAMERA" /> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.VIBRATE" /> 
    <uses-permission android:name="android.permission.FLASHLIGHT" /> 
    <uses-permission android:name="android.permission.READ_CONTACTS" /> 
    <uses-permission android:name="com.android.browser.permission.READ_HISTORY_BOOKMARKS" /> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> 
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 

    <uses-permission android:name="android.permission.READ_PHONE_STATE" /> 
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 

    <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="ScannerBucatarie" 
     android:theme="@style/AppTheme"> 
     <activity 
      android:name=".MainActivity" 
      android:label="ScannerBucatarie" 
      android:screenOrientation="portrait"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <activity 
      android:name="com.google.zxing.client.android.CaptureActivity" 
      android:configChanges="orientation|keyboardHidden" 
      android:label="ZXing ScanBar" 
      android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 
      android:windowSoftInputMode="stateAlwaysHidden"> 
      <intent-filter> 
       <action android:name="com.google.zxing.client.android.SCAN" /> 

       <category android:name="android.intent.category.DEFAULT" /> 
      </intent-filter> 
     </activity> 
     <activity 
      android:name=".SecondActivity" 
      android:label="@string/title_activity_second"></activity> 
    </application> 

</manifest> 

Config.java

package br.exemplozxingintegration; 

/** 
* Created by Boghy on 09.02.2016. 
*/ 
public class Config { 
    public static final String DATA_URL = "http://192.168.94.1/test/getData.php?id="; 
    public static final String KEY_NAME = "name"; 
    public static final String KEY_ADDRESS = "address"; 
    public static final String KEY_VC = "vc"; 
    public static final String JSON_ARRAY = "result"; 
} 

SecondActivity.java

package br.exemplozxingintegration; 

import android.app.ProgressDialog; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 
import android.widget.Toast; 

import com.android.volley.RequestQueue; 
import com.android.volley.Response; 
import com.android.volley.VolleyError; 
import com.android.volley.toolbox.StringRequest; 
import com.android.volley.toolbox.Volley; 

import org.json.JSONArray; 
import org.json.JSONException; 
import org.json.JSONObject; 

public class SecondActivity extends AppCompatActivity implements View.OnClickListener { 

    private EditText editTextId; 
    private Button buttonGet; 
    private TextView textViewResult; 

    private ProgressDialog loading; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     editTextId = (EditText) findViewById(R.id.editTextId); 
     buttonGet = (Button) findViewById(R.id.buttonGet); 
     textViewResult = (TextView) findViewById(R.id.textViewResult); 

     buttonGet.setOnClickListener(this); 
    } 

    private void getData() { 
     String id = editTextId.getText().toString().trim(); 
     if (id.equals("")) { 
      Toast.makeText(this, "Please enter an id", Toast.LENGTH_LONG).show(); 
      return; 
     } 
     loading = ProgressDialog.show(this,"Please wait...","Fetching...",false,false); 

     String url = Config.DATA_URL+editTextId.getText().toString().trim(); 

     StringRequest stringRequest = new StringRequest(url, new Response.Listener<String>() { 
      @Override 
      public void onResponse(String response) { 
       loading.dismiss(); 
       showJSON(response); 
      } 
     }, 
       new Response.ErrorListener() { 
        @Override 
        public void onErrorResponse(VolleyError error) { 
         Toast.makeText(SecondActivity.this,error.getMessage().toString(),Toast.LENGTH_LONG).show(); 
        } 
       }); 

     RequestQueue requestQueue = Volley.newRequestQueue(this); 
     requestQueue.add(stringRequest); 
    } 

    private void showJSON(String response){ 
     String name=""; 
     String address=""; 
     String vc = ""; 
     try { 
      JSONObject jsonObject = new JSONObject(response); 
      JSONArray result = jsonObject.getJSONArray(Config.JSON_ARRAY); 
      JSONObject collegeData = result.getJSONObject(0); 
      name = collegeData.getString(Config.KEY_NAME); 
      address = collegeData.getString(Config.KEY_ADDRESS); 
      vc = collegeData.getString(Config.KEY_VC); 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
     textViewResult.setText("Name:\t"+name+"\nAddress:\t" +address+ "\nVice Chancellor:\t"+ vc); 
    } 

    @Override 
    public void onClick(View v) { 
     getData(); 
    } 
}` AndroidManifet.xml 
<?xml version="1.0" encoding="utf-8"?> 
    <manifest xmlns:android="http://schemas.android.com/apk/res/android" 
     package="br.exemplozxingintegration" 
     android:versionCode="1" 
     android:versionName="1.0"> 

     <uses-sdk 
      android:minSdkVersion="8" 
      android:targetSdkVersion="19" /> 

     <uses-permission android:name="android.permission.CAMERA" />  
     <uses-permission android:name="android.permission.INTERNET" /> 
     <uses-permission android:name="android.permission.VIBRATE" /> 
     <uses-permission android:name="android.permission.FLASHLIGHT" /> 
     <uses-permission android:name="android.permission.READ_CONTACTS" /> 
     <uses-permission android:name="com.android.browser.permission.READ_HISTORY_BOOKMARKS" /> 
     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
     <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> 
     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 

     <uses-permission android:name="android.permission.READ_PHONE_STATE" /> 
     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 


Config.java 

    package br.exemplozxingintegration; 

    /** 
    * Created by Boghy on 09.02.2016. 
    */ 
    public class Config { 
     public static final String DATA_URL = "http://192.168.94.1/test/getData.php?id="; 
     public static final String KEY_NAME = "name"; 
     public static final String KEY_ADDRESS = "address"; 
     public static final String KEY_VC = "vc"; 
     public static final String JSON_ARRAY = "result"; 
    } 

activity_second.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" 
    android:orientation="vertical" 
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".SecondActivity"> 

    <LinearLayout 
     android:orientation="horizontal" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 

     <EditText 
      android:id="@+id/txResult" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_weight="1"/> 
     <Button 
      android:id="@+id/buttonGet" 
      android:text="Get" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" /> 

    </LinearLayout> 
    <TextView 
     android:id="@+id/textViewResult" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" /> 

</LinearLayout> 

activity_main.xml中

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/LinearLayout1" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:weightSum="1"> 

    <View 
     android:layout_width="match_parent" 
     android:layout_height="1dp" 
     android:layout_marginTop="10dp" 
     android:layout_marginBottom="10dp" 
     android:background="#ddd" /> 

    <Button 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="Scan" 
     android:onClick="callZXing" 
     android:id="@+id/Button" /> 

    <View 
     android:layout_width="match_parent" 
     android:layout_height="1dp" 
     android:layout_marginTop="10dp" 
     android:layout_marginBottom="10dp" 
     android:background="#ddd" /> 

    <TextView 
     android:id="@+id/txResult" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="Rezultat:" 
     android:textSize="20sp" /> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:text="Is this the correct code?" 
     android:id="@+id/textView" 
     android:layout_marginTop="70dp" 
     android:layout_gravity="center_horizontal" /> 

    <Button 
     style="@style/CaptureTheme" 
     android:layout_width="112dp" 
     android:layout_height="68dp" 
     android:text="Yes" 
     android:layout_marginTop="30dp" 
     android:id="@+id/button2" 
     android:layout_weight="0.10" 
     android:layout_gravity="center_horizontal" 
     android:onClick="sendSecond" /> 

    <Button 
     style="@style/CaptureTheme" 
     android:layout_width="112dp" 
     android:layout_height="68dp" 
     android:text="No" 
     android:layout_marginTop="10dp" 
     android:id="@+id/button1" 
     android:layout_weight="0.10" 
     android:layout_gravity="center_horizontal" 
     android:onClick="callZXing" /> 

</LinearLayout> 
SecondActivity.java 

package br.exemplozxingintegration; 

import android.app.ProgressDialog; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 
import android.widget.Toast; 

import com.android.volley.RequestQueue; 
import com.android.volley.Response; 
import com.android.volley.VolleyError; 
import com.android.volley.toolbox.StringRequest; 
import com.android.volley.toolbox.Volley; 

import org.json.JSONArray; 
import org.json.JSONException; 
import org.json.JSONObject; 

public class SecondActivity extends AppCompatActivity implements View.OnClickListener { 

    private EditText editTextId; 
    private Button buttonGet; 
    private TextView textViewResult; 

    private ProgressDialog loading; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     editTextId = (EditText) findViewById(R.id.editTextId); 
     buttonGet = (Button) findViewById(R.id.buttonGet); 
     textViewResult = (TextView) findViewById(R.id.textViewResult); 

     buttonGet.setOnClickListener(this); 
    } 

    private void getData() { 
     String id = editTextId.getText().toString().trim(); 
     if (id.equals("")) { 
      Toast.makeText(this, "Please enter an id", Toast.LENGTH_LONG).show(); 
      return; 
     } 
     loading = ProgressDialog.show(this,"Please wait...","Fetching...",false,false); 

     String url = Config.DATA_URL+editTextId.getText().toString().trim(); 

     StringRequest stringRequest = new StringRequest(url, new Response.Listener<String>() { 
      @Override 
      public void onResponse(String response) { 
       loading.dismiss(); 
       showJSON(response); 
      } 
     }, 
       new Response.ErrorListener() { 
        @Override 
        public void onErrorResponse(VolleyError error) { 
         Toast.makeText(SecondActivity.this,error.getMessage().toString(),Toast.LENGTH_LONG).show(); 
        } 
       }); 

     RequestQueue requestQueue = Volley.newRequestQueue(this); 
     requestQueue.add(stringRequest); 
    } 

    private void showJSON(String response){ 
     String name=""; 
     String address=""; 
     String vc = ""; 
     try { 
      JSONObject jsonObject = new JSONObject(response); 
      JSONArray result = jsonObject.getJSONArray(Config.JSON_ARRAY); 
      JSONObject collegeData = result.getJSONObject(0); 
      name = collegeData.getString(Config.KEY_NAME); 
      address = collegeData.getString(Config.KEY_ADDRESS); 
      vc = collegeData.getString(Config.KEY_VC); 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
     textViewResult.setText("Name:\t"+name+"\nAddress:\t" +address+ "\nVice Chancellor:\t"+ vc); 
    } 

    @Override 
    public void onClick(View v) { 
     getData(); 
    } 
} 
+1

你爲什麼不把它作爲一個意圖參數? – Natan

+0

我該怎麼做? @Natan – user3026270

+0

你試過Google嗎? https://www.google.com/search?btnG=1&pws=0&q=android+activity+intent+parameter&gws_rd=ssl – Natan

回答

0

在您的主要活動,請將您的數據轉化爲意向如下:

Intent intent = getIntent(); 
intent.putExtra("Param_name", txtNumOfCards.getText().toString()); 

intent.setClass(this, SecondActivity.class); 
startActivity(intent); 

在本身COND活動,你可以按照以下檢索:

Intent intent = getIntent(); 
String value = intent.getStringExtra("Param_name"); 

結帳以下〔實施例:

http://www.startandroid.ru/en/lessons/complete-list/241-lesson-28-extras-passing-data-using-intent.html

+0

不起作用,它給出了與以前相同的錯誤,謝謝很多人;) – user3026270

+0

錯誤是什麼,請發佈更新的代碼。 –

+0

我不認爲我完全理解,我在哪裏以及如何插入代碼。我不確定,如果Intent能夠將剪貼板中的代碼直接複製到activity_second.xml EditText。對不知道如何Java。 – user3026270

0

由於@Mohammed卡爾瑪解釋,你必須發送ID作爲額外的意圖(沒必要將其複製到剪貼板)。我相信你已經創建了這個Intent,但我正在重新創建它。請記住,我不知道你選擇的名字是否符合你的意圖,所以我只會稱它爲'我'。

在您MainActivity.java:

Intent i= new Intent(MainActivity.class,SecondActivity.java); 
i.putExtra("barcode",txtResult.getText().toString()); 
startActivity(i); 

在您SecondActivity.java:

textViewResult = (TextView) findViewById(R.id.textViewResult); 
    String barcode=getIntent().getStringExtra("barcode"); 
    textViewResult.setText(barcode);