
本次我们就讲一下,Android中页面跳转以及传值的几种方式!
Activity跳转与传值,主要是通过Intent类来连接多个Activity,通过Bundle类来传递数据。
最常见最一般的页面跳转代码,很简单,如下:
Intent intent = new Intent(Athis, Bclass);
startActivity(intent);
也可以这样写:
Intent intent = new Intent();
intentsetClass(Athis, Bclass);
startActivity(intent);
只要这两句,就可以实现从A页面跳转到B页面了。 (A、B均继承自Activity)
有的时候,在跳转页面时还需要传递数据,这个时候如何做呢?
如果数据比较少,比如只要传一个名字,那么只要j加一句"intentputExtra("Name", "feng88724");"即可,代码如下:
Intent intent = new Intent();
intentsetClass(Athis, Bclass);
intentputExtra("Name", "feng88724");
startActivity(intent);
如果数据比较多,就需要使用 Bundle类了,代码如下: (说明直接看注释)
Intent intent = new Intent(Athis, Bclass);
/ 通过Bundle对象存储需要传递的数据 /
Bundle bundle = new Bundle();
/字符、字符串、布尔、字节数组、浮点数等等,都可以传/
bundleputString("Name", "feng88724");
bundleputBoolean("Ismale", true);
/把bundle对象assign给Intent/
intentputExtras(bundle);
startActivity(intent);
以上我们讲的都是如何进行页面跳转及数据传递,那么在另一个页面B上,应该如何接收数据呢?
在A页面上是以Bundle封装了对象,自然在B页面也是以Bundle的方式来解开封装的数据。主要通过"getIntent()getExtras()"方法来获取Bundle,然后再从Bundle中获取数据。 也可以通过" thisgetIntent()getStringExtra("Name");"方法直接从Intent中获取数据。
从Bundle获取数据的代码:
@Override
public void onCreate(Bundle savedInstanceState) {
superonCreate(savedInstanceState);
/加载页面/
setContentView(Rlayoutmain);
/获取Intent中的Bundle对象/
Bundle bundle = thisgetIntent()getExtras();
/获取Bundle中的数据,注意类型和key/
String name = bundlegetString("Name");
boolean ismale = bundlegetBoolean("Ismale");
}页面跳转进行传值的话,你可以用responseredirect(“页面?ids=”+id),但是你讲的那个按钮就不是太明白是什么意思了,按钮有什么值吗?不过你可以考虑有JS试试看,也许能实现你想要的效果这个就不是传值的问题了。
我建议:为每一个按钮添加事件监听,根据Id判断你点击的是哪一个,针对不同的id,做出不通的反应就可以了。这个时候最好用implements OnClickListener 然后就可以在下面判断了
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(vgetId()==Ridbutton1){
}
if(vgetId()==Ridbutton2){
}
}
好吧 我看错了 你使用的是GridView,那就更简单了,直接使用gridViewsetOnItemClickListrner(new OnItemClickListrner)就可以了自动补全之后就可以根据ID设置了可以。
WebViewaddJavascriptInterface(new AndroidJavaScript(this), "Android");
在AndroidJavaScript类里定义的方法都可以通过在连接中写windowsAndroidxxx来完成。
xxx就是AndroidJavaScript类里定义的方法(可以带参数的)在a里用startactivityforresult启动b,退出b后a能接受到b的值,跳转c前把b传过来的值用intent也一起传过去,或者不关闭a,也是用startactivityforresult启动c,c关闭后值传回来到a里可以考虑通过url的方式传递到html中。比如说传用户名,你的html页面名字叫1html,那么这样传值:1htmluid=张三,而在html页面中,用js来获取到uid的值。Intent intent = new Intent();
//用intentputExtra(String name, String value);来传递参数。
intentputExtra("one",number1);
intentputExtra("two", number2);
intentsetClass(activity1this, activity2class);
startActivity(intent);
然后在activity2中
Intent intent1 = getIntent();
// 用intent1getStringExtra()来得到activity1发过来的字符串。
String one = intent1getStringExtra("one");
String two = intent1getStringExtra("two");
然后在sql语句获取值存储。
安卓实现页面跳转及传递参数教程:
用类名跳转
Intent负责对应用中一次 *** 作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述, 负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用。Intent在这里起着实现调用者与被调用者之间的解耦作用。
Intent传递过程中,要找到目标消费者(另一个Activity,IntentReceiver或Service),也就是Intent的响应者。
Java代码 package comAndroid;import androidappActivity;
import androidcontentIntent;
import androidosBundle;
import androidviewView;
import androidviewViewOnClickListener;
public class FormStuff extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
superonCreate(savedInstanceState);
setContentView(Rlayoutformstuff);
final ImageButton button = (ImageButton) findViewById(Ridandroid_button);
buttonsetOnClickListener(new OnClickListener() {
public void onClick(View v) {
// 用类名跳转,需要在AndroidManifestxml中申明activity
Intent intent = new Intent(FormStuffthis, HelloTabWidgetclass);
startActivity(intent);
}
});
}
复制代码Xml代码 <xml version="10" encoding="utf-8">
<manifest xmlns:android=";
使用Action跳转实现
使用Action跳转,如果有一个程序的 AndroidManifestxml中的某一个Activity的IntentFilter段中定义了包含了相同的Action那么这个Intent 就与这个目标Action匹配。如果这个IntentFilter段中没有定义 Type,Category,那么这个 Activity就匹配了。但是如果手机中有两个以上的程序匹配,那么就会d出一个对话可框来提示说明。
Action的值在Android中有很多预定义,如果想直接转到你自己定义的Intent接收者,可以在接收者的 IntentFilter中加入一个自定义的Action值(同时要设定 Category值为"androidintentcategoryDEFAULT"),在Intent中设定该值为Intent的 Action,就直接能跳转到自己的Intent接收者中。因为这个Action在系统中是唯一的。
data/type,可以用Uri来做为data,比如Uri uri = Uriparse(>
Intent i = new Intent(IntentACTION_VIEW,uri);手机的Intent分发过程中,会根据>
手机的Brower则能匹配它,在Brower的Manifestxml中的IntenFilter中首先有ACTION_VIEW Action,也能处理>
至于分类Category,一般不要去在Intent中设置它,如果写Intent的接收者,就在Manifestxml的 Activity的 IntentFilter中包含androidcategoryDEFAULT,这样所有不设置 Category(IntentaddCategory(String c);)的Intent都会与这个Category匹配。
extras(附加信息),是其它所有附加信息的集合。使用extras可以为组件提供扩展信息,比如,如果要执行“发送电子邮件”这个动作,可以将电子邮件的标题、正文等保存在extras里,传给电子邮件发送组件。
Java代码 package comandroidedit_text;import androidappActivity;
import androidcontentIntent;
import androidosBundle;
import androidviewKeyEvent;
import androidviewView;
import androidwidgetEditText;
public class MyEditText extends Activity {
private TextView m_TextView;
private EditText m_EditText;
@Override
public void onCreate(Bundle savedInstanceState) {
superonCreate(savedInstanceState);
setContentView(Rlayoutmain);
m_EditText = (EditText) thisfindViewById(RidEditText01);
m_EditTextsetOnKeyListener(editTextKeyListener);
}
private EditTextOnKeyListener editTextKeyListener = new EditTextOnKeyListener() {
@Override
public boolean onKey(View arg0, int arg1, KeyEvent arg2) {
// action跳转,需要在AndroidManifestxml中配置action
Intent i = new Intent("androidintentactionmydialog");
MyEditTextthisstartActivity(i);
return false;
}
};
}
复制代码Xml代码 <xml version="10" encoding="utf-8">
<manifest xmlns:android=";</manifest>
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)