Redirect : Activity « UI « Android






Redirect

     
/*
 * Copyright (C) 2007 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package app.test;

import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

/**
 * Entry into our redirection example, describing what will happen.
 */
public class Test extends Activity {
  static final int INIT_TEXT_REQUEST = 0;
  static final int NEW_TEXT_REQUEST = 1;

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

    setContentView(R.layout.main);

    // Watch for button clicks.
    Button clearButton = (Button) findViewById(R.id.clear);
    clearButton.setOnClickListener(mClearListener);
    Button newButton = (Button) findViewById(R.id.newView);
    newButton.setOnClickListener(mNewListener);

    // Retrieve the current text preference. If there is no text
    // preference set, we need to get it from the user by invoking the
    // activity that retrieves it. To do this cleanly, we will
    // temporarily hide our own activity so it is not displayed until the
    // result is returned.
    if (!loadPrefs()) {
      Intent intent = new Intent(this, RedirectGetter.class);
      startActivityForResult(intent, INIT_TEXT_REQUEST);
    }
  }

  @Override
  protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == INIT_TEXT_REQUEST) {

      // If the request was cancelled, then we are cancelled as well.
      if (resultCode == RESULT_CANCELED) {
        finish();

        // Otherwise, there now should be text... reload the prefs,
        // and show our UI. (Optionally we could verify that the text
        // is now set and exit if it isn't.)
      } else {
        loadPrefs();
      }

    } else if (requestCode == NEW_TEXT_REQUEST) {

      // In this case we are just changing the text, so if it was
      // cancelled then we can leave things as-is.
      if (resultCode != RESULT_CANCELED) {
        loadPrefs();
      }

    }
  }

  private final boolean loadPrefs() {
    // Retrieve the current redirect values.
    // NOTE: because this preference is shared between multiple
    // activities, you must be careful about when you read or write
    // it in order to keep from stepping on yourself.
    SharedPreferences preferences = getSharedPreferences("RedirectData", 0);

    mTextPref = preferences.getString("text", null);
    if (mTextPref != null) {
      TextView text = (TextView) findViewById(R.id.text);
      text.setText(mTextPref);
      return true;
    }

    return false;
  }

  private OnClickListener mClearListener = new OnClickListener() {
    public void onClick(View v) {
      // Erase the preferences and exit!
      SharedPreferences preferences = getSharedPreferences(
          "RedirectData", 0);
      preferences.edit().remove("text").commit();
      finish();
    }
  };

  private OnClickListener mNewListener = new OnClickListener() {
    public void onClick(View v) {
      // Retrieve new text preferences.
      Intent intent = new Intent(Test.this, RedirectGetter.class);
      startActivityForResult(intent, NEW_TEXT_REQUEST);
    }
  };

  private String mTextPref;
}

/**
 * Sub-activity that is executed by the redirection example when input is needed
 * from the user.
 */
class RedirectGetter extends Activity {
  private String mTextPref;
  private TextView mText;

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

    setContentView(R.layout.row);

    // Watch for button clicks.
    Button applyButton = (Button) findViewById(R.id.apply);
    applyButton.setOnClickListener(mApplyListener);

    // The text being set.
    mText = (TextView) findViewById(R.id.text);

    // Display the stored values, or if not stored initialize with an empty
    // String
    loadPrefs();
  }

  private final void loadPrefs() {
    // Retrieve the current redirect values.
    // NOTE: because this preference is shared between multiple
    // activities, you must be careful about when you read or write
    // it in order to keep from stepping on yourself.
    SharedPreferences preferences = getSharedPreferences("RedirectData", 0);

    mTextPref = preferences.getString("text", null);
    if (mTextPref != null) {
      mText.setText(mTextPref);
    } else {
      mText.setText("");
    }
  }

  private OnClickListener mApplyListener = new OnClickListener() {
    public void onClick(View v) {
      SharedPreferences preferences = getSharedPreferences(
          "RedirectData", 0);
      SharedPreferences.Editor editor = preferences.edit();
      editor.putString("text", mText.getText().toString());

      if (editor.commit()) {
        setResult(RESULT_OK);
      }

      finish();
    }
  };
}
//main.xml

<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2007 The Android Open Source Project

     Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
     You may obtain a copy of the License at
  
          http://www.apache.org/licenses/LICENSE-2.0
  
     Unless required by applicable law or agreed to in writing, software
     distributed under the License is distributed on an "AS IS" BASIS,
     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     See the License for the specific language governing permissions and
     limitations under the License.
-->

<!-- Demonstrates redirection between activities.
     See corresponding Java code com.android.sdk.app.RedirectEnter.java. -->

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:padding="4dip"
    android:gravity="center_horizontal"
    android:layout_width="match_parent" android:layout_height="match_parent">

    <TextView
        android:layout_width="match_parent" android:layout_height="wrap_content"
        android:layout_weight="0"
        android:paddingBottom="4dip"
        android:text="redirect_main"/>

    <TextView android:id="@+id/text"
        android:layout_width="match_parent" android:layout_height="wrap_content"
        android:layout_weight="0"
        android:paddingBottom="4dip" />

    <Button android:id="@+id/clear"
        android:layout_width="wrap_content" android:layout_height="wrap_content" 
        android:text="clear_text">
        <requestFocus />
    </Button>

    <Button android:id="@+id/newView"
        android:layout_width="wrap_content" android:layout_height="wrap_content" 
        android:text="new_text">
    </Button>

</LinearLayout>

//row.xml

<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2007 The Android Open Source Project

     Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
     You may obtain a copy of the License at
  
          http://www.apache.org/licenses/LICENSE-2.0
  
     Unless required by applicable law or agreed to in writing, software
     distributed under the License is distributed on an "AS IS" BASIS,
     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     See the License for the specific language governing permissions and
     limitations under the License.
-->

<!-- Demonstrates redirection between activities.
     See corresponding Java code com.android.sdk.app.RedirectEnter.java. -->

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:padding="4dip"
    android:gravity="center_horizontal"
    android:layout_width="match_parent" android:layout_height="match_parent">

    <TextView
        android:layout_width="match_parent" android:layout_height="wrap_content"
        android:layout_weight="0"
        android:paddingBottom="4dip"
        android:text="redirect_getter"/>

    <EditText android:id="@+id/text"
        android:layout_width="match_parent" android:layout_height="wrap_content"
        android:layout_weight="0"
        android:paddingBottom="4dip">
        <requestFocus />
    </EditText>

    <Button android:id="@+id/apply"
        android:layout_width="wrap_content" android:layout_height="wrap_content" 
        android:text="apply" />

</LinearLayout>

   
    
    
    
    
  








Related examples in the same category

1.Backup Activity
2.Notification Activity
3.Timing Activity
4.Set content view from xml for Activity
5.More than one Activity
6.Find user control by using findViewById
7.A Simple Form
8.Link form with POJO
9.Life cycle
10.Comparing Android UI Elements to Swing UI Elements
11.add android:background = "#FFFF0000"
12.Rotation demo
13.Set activity screen Orientation
14.Check activity result
15.Activity lifecycle event
16.Activity key event
17.Allows the activity to manage the Cursor's lifecyle based on the activity’s lifecycle---
18.Activity configuration changed event
19.Check Activity result and onActivityResult
20.Phone Call Activity
21.Using Media Store Activity
22.External Storage Activity
23.Making Activity Go Full-Screen
24.Surface View Test Activity
25.Widget Preview Activity
26.This class provides a basic demonstration of how to write an Android activity.
27.This demonstrates the basic code needed to write a Screen activity
28.Example of removing yourself from the history stack after forwarding to another activity.
29.Fancy Blur Activity
30.Example of receiving a result from another activity.
31.Demonstrates required behavior of saving and restoring dynamic activity state
32.Securer Activity
33.This activity is an example of a simple settings screen that has default values.
34.Bind Click Action Activity
35.get ActivityManager
36.forward to another Activity
37.Request window features before setContentView
38.No code required here to attach the listener
39.Save data to Preference
40.Save instance state
41.onRetainNonConfigurationInstance
42.Create a user interface in code.
43.Demonstrates how the various soft input modes impact window resizing.
44.extends Activity implements OnClickListener