📅  最后修改于: 2021-01-05 05:24:02             🧑  作者: Mango
在本章中,我们将看到如何在应用程序之间进行向前和向后导航。我们将首先研究如何在应用程序中提供导航。
向上导航将使我们的应用程序可以从下一个活动移至上一个活动。可以这样做。
要实现向上导航,第一步是声明哪个活动是每个活动的适当父项。您可以通过在活动中指定parentActivityName属性来实现。其语法如下-
android:parentActivityName = "com.example.test.MainActivity"
之后,您需要在活动的onCreate方法中调用getActionBar()的setDisplayHomeAsUpEnabled方法。这将启用顶部操作栏中的后退按钮。
getActionBar().setDisplayHomeAsUpEnabled(true);
您需要做的最后一件事是重写onOptionsItemSelected方法。当用户按下它时,您的活动将收到对onOptionsItemSelected()的调用。该操作的ID为android.R.id.home,其语法如下-
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
NavUtils.navigateUpFromSameTask(this);
return true;
}
}
由于已启用后退按钮在应用程序中导航,因此您可能希望将应用程序关闭函数置于设备的后退按钮中。
可以通过重写onBackPressed然后调用moveTaskToBack和finish方法来完成。其语法如下-
@Override
public void onBackPressed() {
moveTaskToBack(true);
MainActivity2.this.finish();
}
除了此setDisplayHomeAsUpEnabled方法之外,ActionBar API类中还有其他方法可用。它们在下面列出-
Sr.No | Method & description |
---|---|
1 |
addTab(ActionBar.Tab tab, boolean setSelected) This method adds a tab for use in tabbed navigation mode |
2 |
getSelectedTab() This method returns the currently selected tab if in tabbed navigation mode and there is at least one tab present |
3 |
hide() This method hide the ActionBar if it is currently showing |
4 |
removeAllTabs() This method remove all tabs from the action bar and deselect the current tab |
5 |
selectTab(ActionBar.Tab tab) This method select the specified tab |
下面的示例演示了导航的用法。它创建了一个基本应用程序,使您可以在应用程序中导航。
要试验该示例,您需要在实际设备或仿真器上运行它。
Steps | Description |
---|---|
1 | You will use Android studio to create an Android application under a package com.example.sairamkrishna.myapplication. |
2 | Modify src/MainActivity.java file to add Activity code. |
3 | Create a new activity with the name of second_main.java and edit it to add activity code. |
4 | Modify layout XML file res/layout/activity_main.xml add any GUI component if required. |
5 | Modify layout XML file res/layout/second.xml add any GUI component if required. |
6 | Modify AndroidManifest.xml to add necessary code. |
7 | Run the application and choose a running android device and install the application on it and verify the results. |
这是src / MainActivity.java的内容。
package com.example.sairamkrishna.myapplication;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends Activity {
Button b1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
b1 = (Button) findViewById(R.id.button);
b1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent in=new Intent(MainActivity.this,second_main.class);
startActivity(in);
}
});
}
}
这是src / second_main.java的内容。
package com.example.sairamkrishna.myapplication;
import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebView;
import android.webkit.WebViewClient;
/**
* Created by Sairamkrishna on 4/6/2015.
*/
public class second_main extends Activity {
WebView wv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_activity2);
wv = (WebView) findViewById(R.id.webView);
wv.setWebViewClient(new MyBrowser());
wv.getSettings().setLoadsImagesAutomatically(true);
wv.getSettings().setJavaScriptEnabled(true);
wv.loadUrl("http://www.tutorialspoint.com");
}
private class MyBrowser extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}
}
这是activity_main.xml的内容。
在下面的代码中abc表示tutorialspoint.com的徽标
这是activity_main_activity2.xml的内容。
这是Strings.xml的内容。
My Application
这是AndroidManifest.xml的内容。
让我们尝试运行您的应用程序。我假设您在进行环境设置时已创建了AVD 。要从Android Studio运行该应用,请打开您项目的活动文件之一,然后点击运行工具栏中的图标。 Android studio将应用安装在您的AVD上并启动它,如果您的设置和应用程序一切正常,它将显示在“模拟器”窗口下方-
现在只需按一下按钮,就会显示以下屏幕。
第二个活动包含webview,它已重定向到tutorialspoint.com,如下所示