diff --git a/samples/ApiDemos/AndroidManifest.xml b/samples/ApiDemos/AndroidManifest.xml index 0d0023d49..dbcf2b7ae 100644 --- a/samples/ApiDemos/AndroidManifest.xml +++ b/samples/ApiDemos/AndroidManifest.xml @@ -230,6 +230,13 @@ + + + + + + + diff --git a/samples/ApiDemos/res/values/strings.xml b/samples/ApiDemos/res/values/strings.xml index 392e7b35d..a816b1534 100644 --- a/samples/ApiDemos/res/values/strings.xml +++ b/samples/ApiDemos/res/values/strings.xml @@ -93,6 +93,8 @@ restarts if fragment is re-created. Restart + App/Fragment/Receive Result + App/Activity/Menu Open menu Close menu diff --git a/samples/ApiDemos/src/com/example/android/apis/app/FragmentReceiveResult.java b/samples/ApiDemos/src/com/example/android/apis/app/FragmentReceiveResult.java new file mode 100644 index 000000000..37b542a56 --- /dev/null +++ b/samples/ApiDemos/src/com/example/android/apis/app/FragmentReceiveResult.java @@ -0,0 +1,120 @@ +package com.example.android.apis.app; + +import com.example.android.apis.R; +import com.example.android.apis.app.FragmentStack.CountingFragment; + +import android.app.Activity; +import android.app.Fragment; +import android.app.FragmentTransaction; +import android.content.Intent; +import android.os.Bundle; +import android.text.Editable; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.view.View.OnClickListener; +import android.widget.Button; +import android.widget.FrameLayout; +import android.widget.TextView; + +public class FragmentReceiveResult extends Activity { + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams( + ViewGroup.LayoutParams.MATCH_PARENT, + ViewGroup.LayoutParams.MATCH_PARENT); + FrameLayout frame = new FrameLayout(this); + frame.setId(R.id.simple_fragment); + setContentView(frame, lp); + + if (savedInstanceState == null) { + // Do first time initialization -- add fragment. + Fragment newFragment = new ReceiveResultFragment(); + FragmentTransaction ft = openFragmentTransaction(); + ft.add(newFragment, R.id.simple_fragment).commit(); + } + } + + static class ReceiveResultFragment extends Fragment { + // Definition of the one requestCode we use for receiving resuls. + static final private int GET_CODE = 0; + + private TextView mResults; + + private OnClickListener mGetListener = new OnClickListener() { + public void onClick(View v) { + // Start the activity whose result we want to retrieve. The + // result will come back with request code GET_CODE. + Intent intent = new Intent(getActivity(), SendResult.class); + startActivityForResult(intent, GET_CODE); + } + }; + + public ReceiveResultFragment() { + } + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + } + + @Override + public void onSaveInstanceState(Bundle outState) { + super.onSaveInstanceState(outState); + } + + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + View v = inflater.inflate(R.layout.receive_result, container, false); + + // Retrieve the TextView widget that will display results. + mResults = (TextView)v.findViewById(R.id.results); + + // This allows us to later extend the text buffer. + mResults.setText(mResults.getText(), TextView.BufferType.EDITABLE); + + // Watch for button clicks. + Button getButton = (Button)v.findViewById(R.id.get); + getButton.setOnClickListener(mGetListener); + + return v; + } + + /** + * This method is called when the sending activity has finished, with the + * result it supplied. + */ + @Override + public void onActivityResult(int requestCode, int resultCode, Intent data) { + // You can use the requestCode to select between multiple child + // activities you may have started. Here there is only one thing + // we launch. + if (requestCode == GET_CODE) { + + // We will be adding to our text. + Editable text = (Editable)mResults.getText(); + + // This is a standard resultCode that is sent back if the + // activity doesn't supply an explicit result. It will also + // be returned if the activity failed to launch. + if (resultCode == RESULT_CANCELED) { + text.append("(cancelled)"); + + // Our protocol with the sending activity is that it will send + // text in 'data' as its result. + } else { + text.append("(okay "); + text.append(Integer.toString(resultCode)); + text.append(") "); + if (data != null) { + text.append(data.getAction()); + } + } + + text.append("\n"); + } + } + + } +}