Work on issue #17011123: Hit Back/Recents button when in Recents...

...without interacting with any of the Recents items should not
bring Home back to top

Add API demo for nav bar navigation.

Change-Id: I8b45f2bc0b554da19957ad723abe7cf4a14ee5a1
This commit is contained in:
Dianne Hackborn
2014-08-21 17:52:52 -07:00
parent f1c2891a00
commit 9f744759d1
8 changed files with 220 additions and 1 deletions

View File

@@ -998,6 +998,24 @@
</intent-filter>
</activity>
<activity android:name=".app.ActionBarNavigation"
android:label="@string/action_bar_navigation"
android:enabled="@bool/atLeastJellyBean"
android:taskAffinity=":bar_navigation"
android:launchMode="singleTask">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.SAMPLE_CODE" />
</intent-filter>
</activity>
<activity android:name=".app.ActionBarNavigationTarget"
android:label="@string/action_bar_navigation_target"
android:enabled="@bool/atLeastJellyBean"
android:parentActivityName=".app.ActionBarNavigation"
android:taskAffinity=":bar_navigation">
</activity>
<activity android:name=".app.PrintBitmap"
android:label="@string/print_bitmap"
android:enabled="@bool/atLeastKitKat">

View File

@@ -0,0 +1,49 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2010 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.
-->
<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:layout_marginTop="16dp" android:layout_marginBottom="16dp"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="@string/action_bar_navigation_msg"/>
<TextView android:id="@+id/launchedfrom"
android:layout_width="match_parent" android:layout_height="wrap_content"
android:layout_weight="0" android:layout_marginBottom="32dp"
android:textAppearance="?android:attr/textAppearanceMedium"/>
<Button android:id="@+id/newactivity"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_marginBottom="16dp"
android:onClick="onNewActivity"
android:text="@string/btn_newactivity">
<requestFocus />
</Button>
<Button android:id="@+id/newdoc"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:onClick="onNewDocument"
android:text="@string/btn_newdoc">
<requestFocus />
</Button>
</LinearLayout>

View File

@@ -0,0 +1,29 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2010 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.
-->
<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:layout_marginTop="16dp" android:layout_marginBottom="16dp"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="@string/action_bar_navigation_target_msg"/>
</LinearLayout>

View File

@@ -886,6 +886,19 @@
<string name="btn_toggle_tabs">Toggle tab mode</string>
<string name="btn_remove_all_tabs">Remove all tabs</string>
<string name="action_bar_navigation">App/Action Bar/Action Bar Navigation</string>
<string name="action_bar_navigation_msg">Demonstrates various ways to navigate in
applications involving the action bar. This activity has been launched as the
root of the app\'s task.</string>
<string name="btn_newactivity">New in-task activity</string>
<string name="btn_newdoc">New document</string>
<string name="action_bar_navigation_target">App Nav Child</string>
<string name="action_bar_navigation_target_msg">This is a sub-activity launched by the
application. It may be in either the app\'s main task or another task. Press
up on the action bar to navigate up in the app\'s hierarchy, regardless of where
this activity appears.</string>
<!-- ================================= -->
<!-- app/print print examples strings -->
<!-- ================================= -->

View File

@@ -143,7 +143,8 @@ public class ApiDemos extends ListActivity {
protected void onListItemClick(ListView l, View v, int position, long id) {
Map<String, Object> map = (Map<String, Object>)l.getItemAtPosition(position);
Intent intent = (Intent) map.get("intent");
Intent intent = new Intent((Intent) map.get("intent"));
intent.addCategory(Intent.CATEGORY_SAMPLE_CODE);
startActivity(intent);
}
}

View File

@@ -0,0 +1,61 @@
/*
* Copyright (C) 2010 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 com.example.android.apis.app;
import android.app.ActionBar;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.Window;
import android.widget.TextView;
import android.widget.Toast;
import com.example.android.apis.R;
/**
* This demonstrates implementing common navigation flows with the action bar.
*/
public class ActionBarNavigation extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Turn on the up affordance.
final ActionBar bar = getActionBar();
bar.setDisplayOptions(ActionBar.DISPLAY_HOME_AS_UP, ActionBar.DISPLAY_HOME_AS_UP);
setContentView(R.layout.action_bar_navigation);
TextView text = (TextView)findViewById(R.id.launchedfrom);
if (getIntent().hasCategory(Intent.CATEGORY_SAMPLE_CODE)) {
text.setText("This was launched from ApiDemos");
} else {
text.setText("This was created from up navigation");
}
}
public void onNewActivity(View button) {
Intent intent = new Intent(this, ActionBarNavigationTarget.class);
startActivity(intent);
}
public void onNewDocument(View button) {
Intent intent = new Intent(this, ActionBarNavigationTarget.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT);
startActivity(intent);
}
}

View File

@@ -0,0 +1,40 @@
/*
* Copyright (C) 2010 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 com.example.android.apis.app;
import android.app.ActionBar;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.Window;
import android.widget.Toast;
import com.example.android.apis.R;
/**
* Target launch activity for demonstrations from {@link ActionBarNavigation}.
*/
public class ActionBarNavigationTarget extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.action_bar_navigation_target);
// Turn on the up affordance.
final ActionBar bar = getActionBar();
bar.setDisplayOptions(ActionBar.DISPLAY_HOME_AS_UP, ActionBar.DISPLAY_HOME_AS_UP);
}
}

View File

@@ -1061,6 +1061,14 @@ public class DeviceAdminSample extends PreferenceActivity {
Toast.makeText(context, status, Toast.LENGTH_SHORT).show();
}
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction() == ACTION_DEVICE_ADMIN_DISABLE_REQUESTED) {
abortBroadcast();
}
super.onReceive(context, intent);
}
@Override
public void onEnabled(Context context, Intent intent) {
showToast(context, context.getString(R.string.admin_receiver_status_enabled));