java - 如何使用 Intent 而不是 putExtra 将类文件变量获取到另一个 Activity 并通过按钮进行访问?

标签 java android json

我的问题是当我扫描二维码时,我想获取类文件变量 并通过 btnSearch 按钮发送到另一个 Activity 。请帮帮我该怎么办?抱歉英语不好

这是我的类(class)文件

public class UploadDataGetter {

    @SerializedName("record_id")
    private int id;

    @SerializedName("full_name")
    private static String name;

    @SerializedName("full_address")
    private String address;

    @SerializedName("contact")
    private String contact;

    @SerializedName("dilivery_place")
    private String dplace;

    @SerializedName("dilivery_place")
    private String  fdetails;


    @SerializedName("no_of_normal")
    private int  noOfNormal;

    @SerializedName("no_of_classified")
    private int  noOfClassified;

    @SerializedName("no_of_cds")
    private int  noOfCds;



    public UploadDataGetter(
            //constuctor's para
                        int record_id,
                        String full_name,
                        String full_address,
                        String contact_number,
                        String dilivery_place ,
                        String further_details,
                        int no_of_normal,
                        int no_of_classified,
                        int no_of_cds

    )
    {
        id = record_id;
        name    = full_name;
        address = full_address;
        contact = contact_number;
        dplace  = dilivery_place;
        fdetails = further_details;

        noOfNormal = no_of_normal;
        noOfClassified= no_of_classified;
        noOfCds = no_of_cds;

        String  img_collector ;
        String  dilivery_status ;
        double  geo_long;
        double  geo_lat;

    }

    public
    int getId() {
        return id;
    }

    public
    void setId(int id) {
        this.id = id;
    }

    public static
    String getName() {
        return name;
    }

    public
    void setName(String name) {
        this.name = name;
    }

    public
    String getAddress() {
        return address;
    }

    public
    void setAddress(String address) {
        this.address = address;
    }

    public
    String getContact() {
        return contact;
    }

    public
    void setContact(String contact) {
        this.contact = contact;
    }

    public
    String getDplace() {
        return dplace;
    }

    public
    void setDplace(String dplace) {
        this.dplace = dplace;
    }

    public
    String getFdetails() {
        return fdetails;
    }

    public
    void setFdetails(String fdetails) {
        this.fdetails = fdetails;
    }

    public
    int getNoOfNormal() {
        return noOfNormal;
    }

    public
    void setNoOfNormal(int noOfNormal) {
        this.noOfNormal = noOfNormal;
    }

    public
    int getNoOfClassified() {
        return noOfClassified;
    }

    public
    void setNoOfClassified(int noOfClassified) {
        this.noOfClassified = noOfClassified;
    }

    public
    int getNoOfCds() {
        return noOfCds;
    }

    public
    void setNoOfCds(int noOfCds) {
        this.noOfCds = noOfCds;
    }

这是我的二维码 Activity ,

public class QrActivity extends AppCompatActivity {


    public static UploadDataGetter id;
    public static UploadDataGetter name;
    public static UploadDataGetter address;
    public static UploadDataGetter dplace;
    public static UploadDataGetter fdetails;
    public static UploadDataGetter noOfNormal;
    public static UploadDataGetter noOfClassified;
    public static UploadDataGetter noOfCds;
    public static UploadDataGetter img_collector;
    public static UploadDataGetter dilivery_status;



    /**
     * QR code declaration
     */

    Button btnscan, btnSearch;
    TextView lblSearch;

    TextView ID;
    TextView DPlace;
    TextView Address;
    TextView name;
    TextView contact;
    private Object uploadDataGetter;
    private String result;


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

        btnscan = (Button) findViewById(R.id.btnscan);
        btnscan.setClickable(false);
        btnSearch = (Button) findViewById(R.id.btnSearch);
        btnSearch.setClickable(false);
        lblSearch = (TextView) findViewById(R.id.lblSearch);



        final Activity activity = this;
        btnscan.setOnClickListener(new View.OnClickListener() {
            @Override
            public
            void onClick(View v) {
                btnscan.setClickable(true);
                IntentIntegrator integrator = new IntentIntegrator(activity);
                integrator.setDesiredBarcodeFormats(IntentIntegrator.QR_CODE_TYPES);
                integrator.setPrompt("Scan");
                integrator.setCameraId(0);
                integrator.setBeepEnabled(false);
                integrator.setBarcodeImageEnabled(false);
                integrator.initiateScan();



            }


        });

        //call the class var
        if (this.getIntent().getAction().equals("moveData"))
            moveData();
    }

    private void moveData() {



        String id = uploadDataGetter.toString();
        String name = uploadDataGetter.toString();
        String address = uploadDataGetter.toString();
        String dplace = uploadDataGetter.toString();
        String noOfNormal= uploadDataGetter.toString();
        String noOfClassified = uploadDataGetter.toString();
        String noOfCds = uploadDataGetter.toString();




        //this is for Calling class file




    }





    @Override
    protected
    void onActivityResult(int requestCode, int resultCode, Intent data) {
        IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);

        if (result != null) {

            if (result.getContents() == null) {

                Toast.makeText(this, "You cancelled the scanning", Toast.LENGTH_SHORT).show();
            } else {
                /**
                 * Qr code result
                 * */
                lblSearch.setText(result.getContents());

                // Toast.makeText(this, result.getContents(), Toast.LENGTH_SHORT).show();
            }
        } else {
            super.onActivityResult(requestCode, resultCode, data);
        }




         // "Go to Second Activity" button click
        View.OnClickListener listener = new View.OnClickListener() {

            @Override
            public
            void onClick(View v) {
                btnSearch.setClickable(true);

                Intent myIntent= new Intent(QrActivity.this, DistributionDetails.class);


                myIntent.setAction("moveData");


                startActivity(myIntent);


            }

        };
        btnscan.setOnClickListener(listener);
        btnSearch.setOnClickListener(listener);

    }


    public
    void getResults(View view) {
    }
}

最佳答案

用这个替换你的类

public class UploadDataGetter implements Serializable {

    @SerializedName("record_id")
    private int id;

    @SerializedName("full_name")
    private String name;

    @SerializedName("full_address")
    private String address;

    @SerializedName("contact")
    private String contact;

    @SerializedName("dilivery_place")
    private String dplace;

    @SerializedName("dilivery_place")
    private String fdetails;

    @SerializedName("no_of_normal")
    private int noOfNormal;

    @SerializedName("no_of_classified")
    private int noOfClassified;

    @SerializedName("no_of_cds")
    private int noOfCds;


    public UploadDataGetter(
            //constuctor's para
            int record_id,
            String full_name,
            String full_address,
            String contact_number,
            String dilivery_place,
            String further_details,
            int no_of_normal,
            int no_of_classified,
            int no_of_cds

    ) {
        id = record_id;
        name = full_name;
        address = full_address;
        contact = contact_number;
        dplace = dilivery_place;
        fdetails = further_details;

        noOfNormal = no_of_normal;
        noOfClassified = no_of_classified;
        noOfCds = no_of_cds;

        String img_collector;
        String dilivery_status;
        double geo_long;
        double geo_lat;

    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getContact() {
        return contact;
    }

    public void setContact(String contact) {
        this.contact = contact;
    }

    public String getDplace() {
        return dplace;
    }

    public void setDplace(String dplace) {
        this.dplace = dplace;
    }

    public String getFdetails() {
        return fdetails;
    }

    public void setFdetails(String fdetails) {
        this.fdetails = fdetails;
    }

    public int getNoOfNormal() {
        return noOfNormal;
    }

    public void setNoOfNormal(int noOfNormal) {
        this.noOfNormal = noOfNormal;
    }

    public int getNoOfClassified() {
        return noOfClassified;
    }

    public void setNoOfClassified(int noOfClassified) {
        this.noOfClassified = noOfClassified;
    }

    public int getNoOfCds() {
        return noOfCds;
    }

    public void setNoOfCds(int noOfCds) {
        this.noOfCds = noOfCds;
    }
}

现在将其发送到这样的 Intent 中的新 Activity

Intent intent=new Intent(this, NewActivity.class);
int.putExtra("data", YOUR_UPDATE_DATA_GETTER_OBJECT);

现在像这样在新 Activity 中获取对象

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;

public class NewActivity extends Activity {


    private UploadDataGetter dataGetter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Intent intent=getIntent();
        if(intent.hasExtra("data")){
            dataGetter= (UploadDataGetter) intent.getSerializableExtra("data");
            Log.d("NewActivity","ID: "+dataGetter.getId());
        }
    }
}

关于java - 如何使用 Intent 而不是 putExtra 将类文件变量获取到另一个 Activity 并通过按钮进行访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57194208/

相关文章:

java - 如何将 XML 转换为仅 STRING 类型的 Json

javascript - 解析转义的 javascript

c# - 将 application/x-www-form-urlencoded 发布到 SOAP/JSON WCF 服务

java - 是否有墨卡托网络爬虫的任何开源实现

android - 为什么我的旋转动画有缓动效果?

android - 推荐 .gitignore 用于 react-native

javascript - NativeScript:UI 不会在不刷新的情况下显示从 ObservableArray 中删除的项目

java - 如何在java中解码JPX图像?

java - 带前导零输出的长变量

java - 设置 webapprootkey no-web.xml