将活动中的字符串发送到片段EditText

时间:2015-11-06 10:00:46

标签: android

我的ListViewFragment中有一个启动扫描的按钮。我扫描序列号并在我的MainActivities onActivityResult方法中获取字符串(我的MainActivity中还有另一个扫描。我收到字符串,我想将字符串发送回{{1} 1}}在ListViewFragment中设置它。但是我得到一个NullPointerException,因为我的EditText想要得到ListViewFragment字符串为空。 我怎样才能提供我的片段在扫描完串口后调用捆绑包?

片段:

serialFromScan

MainActivity:

inputSerial = (EditText) view.findViewById(R.id.editText_serial);
        ImageButton ib = (ImageButton) view.findViewById(R.id.button_scan_serial);
        ib.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent("com.google.zxing.client.android.SCAN");
                intent.putExtra("SCAN_FORMATS", "CODE_39,CODE_93,CODE_128,DATA_MATRIX,ITF,CODABAR,EAN_13,EAN_8,UPC_A");
                getActivity().startActivityForResult(intent, 11);

                Bundle b = getArguments();
                String serialFromScan = b.getString("serialFromScan");
                Log.d("Seriennummerangekommen?", serialFromScan);


            }
        });

[...]

    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.scanbutton);
    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent intent = new Intent("com.google.zxing.client.android.SCAN");
            intent.putExtra("SCAN_MODE", "QR_CODE_MODE");
            startActivityForResult(intent,10);
        }
    });

2 个答案:

答案 0 :(得分:2)

在初始化包之后编写startActivityForResult()。 试试这个答案..

inputSerial = (EditText) view.findViewById(R.id.editText_serial);
    ImageButton ib = (ImageButton) view.findViewById(R.id.button_scan_serial);
    ib.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent intent = new Intent("com.google.zxing.client.android.SCAN");
            intent.putExtra("SCAN_FORMATS", "CODE_39,CODE_93,CODE_128,DATA_MATRIX,ITF,CODABAR,EAN_13,EAN_8,UPC_A");

            Bundle b = getArguments();
getActivity().startActivityForResult(intent, 11);

            String serialFromScan = b.getString("serialFromScan");
            Log.d("Seriennummerangekommen?", serialFromScan);


        }
    });

答案 1 :(得分:1)

getActivity()。startActivityForResult(intent,11);

Bundle bundle = new Bundle();
bundle.putString("edttext", "From Activity");
// set Fragmentclass Arguments
Fragmentclass fragobj = new Fragmentclass();
fragobj.setArguments(bundle);

并在Fragment onCreateView方法中:

Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
    Bundle savedInstanceState) {
Bundle bundle = this.getArguments();
String strtext = getArguments().getString("edttext");    
return inflater.inflate(R.layout.fragment, container, false);
}