In this example I'm showing how to send data from Activity to Fragment.
With app Zxing via Intent we read the Barcode and that we represent it in the main Fragment. The Zxing app call onActivityResult() in Activity not in Fragment.
package com.example.testingcodereading; import android.content.Intent; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentManager; public class MainActivity extends FragmentActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_fragment); FragmentManager fm = getSupportFragmentManager(); Fragment f = fm.findFragmentById(R.id.fragmentContainer); if (f == null) { f = MainFragment.newInstance("Start Application"); fm.beginTransaction().add(R.id.fragmentContainer, f).commit(); } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent intent) { super.onActivityResult(requestCode, resultCode, intent); System.out.println("the code is catch"); IntentResult scanResult = IntentIntegrator.parseActivityResult( requestCode, resultCode, intent); // handle scan result if (scanResult != null) { FragmentManager fm = getSupportFragmentManager(); Fragment newFrame = MainFragment.newInstance(scanResult.toString()); fm.beginTransaction().replace(R.id.fragmentContainer, newFrame).commit(); } } }
package com.example.testingcodereading; import android.content.Intent; import android.content.pm.ActivityInfo; import android.content.pm.ResolveInfo; import android.os.Bundle; import android.support.v4.app.Fragment; import android.test.suitebuilder.annotation.MediumTest; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.TextView; public class MainFragment extends Fragment { private static final String EXTRA_CODE = "com.example.testingcodereading.code"; private Button mButtonXZing; private TextView mTextView; public static MainFragment newInstance(String code) { Bundle args = new Bundle(); args.putSerializable(EXTRA_CODE, code); MainFragment fragment = new MainFragment(); fragment.setArguments(args); return fragment; } @Override public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState){ View v = inflater.inflate(R.layout.fragment_main, parent, false); mTextView = (TextView) v.findViewById(R.id.text_code); mTextView.setText((String) getArguments().getSerializable(EXTRA_CODE)); mButtonXZing = (Button) v.findViewById(R.id.button_xzing); mButtonXZing.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { IntentIntegrator integrator = new IntentIntegrator(getActivity()); integrator.initiateScan(); } }); return v; } @Override public void onActivityResult(int requestCode, int resultCode, Intent intent) { super.onActivityResult(requestCode, resultCode, intent); System.out.println("never here"); IntentResult scanResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent); if (scanResult != null) { // handle scan result } // else continue with any other code you need in the method } }
what is com.example.testingcodereading.code?
ReplyDeleteits not working. What's com.example.testingcodereading.code?
ReplyDelete