当前位置:编程学习 > wap >>

activity跳转时,怎么使用字符串作为id跳转?

比如我有10个activity,可能会有更多。
由于跳转到的activity不固定,由服务器端配置手机客户端的显示状况,而且activity的数量也不固定,所以不能用选择判断。
希望实现以下方式达成跳转。
Activity act = Activity.Parse("myActivity");      // myActivity是用jason传过来的参数
Intent intent = new  Intent(this, act.class);     
startActivity(intent);
想在就是想找个类似Parse之类的方法可使让字符串转成具体的类型来跳转。 --------------------编程问答-------------------- 可以为每个activity事先定义好action,根据action来启动.
http://blog.csdn.net/elfylin/article/details/6001460 --------------------编程问答-------------------- activity的数量也不固定????
怎么会不固定的呢,那你是不是要先在AndroidManifest.xml注册呢? --------------------编程问答-------------------- Class send = Class.forName(sendClass);
intent.setClass(thisActivity.this, send);

sendclass就是个字符串 --------------------编程问答-------------------- 反射是吧? 楼上是对的 --------------------编程问答-------------------- 用反射啊,3L正解 --------------------编程问答-------------------- 反射是一种好方式 --------------------编程问答-------------------- 3楼的方式好用。
Class activity = Class.forName("com.example.tt.newActivity");
Intent intent = new  Intent(this, activity);
startActivity(intent);

又找了一下资料,发现自带的方法也可以使用。
看起来内部就是使用反射实现的。
String strPackage = MainActivity.this.getPackageName();
intent.setComponent(new ComponentName(strPackage, strPackage + "." + "newActivity"));
startActivity(intent);


现在的问题是,使用反射需要这个异常。
public void button1Click(View v) throws ClassNotFoundException{
但是不太懂为什么要声明这个异常,就算不声明,不是出了异常也是一样的往外抛么?

另外java的反射没用过,但是C#的反射就效率很差,不知道java的是不是也一样。。。 --------------------编程问答--------------------
引用 7 楼 kolosi 的回复:
3楼的方式好用。
Class activity = Class.forName("com.example.tt.newActivity");
Intent intent = new  Intent(this, activity);
startActivity(intent);

又找了一下资料,发现自带的方法也可以使用。
看起来内部就是使用反射实现的。
String strPackage = MainActivity.this.getPackageName();
intent.setComponent(new ComponentName(strPackage, strPackage + "." + "newActivity"));
startActivity(intent);


现在的问题是,使用反射需要这个异常。
public void button1Click(View v) throws ClassNotFoundException{
但是不太懂为什么要声明这个异常,就算不声明,不是出了异常也是一样的往外抛么?

另外java的反射没用过,但是C#的反射就效率很差,不知道java的是不是也一样。。。


这么简单的一个东西为什么搞那么复杂?为每个activity定义一个action很难吗?根据action来启动不比反射什么的方便点吗? --------------------编程问答--------------------
引用 8 楼 guoyoulei520 的回复:
Quote: 引用 7 楼 kolosi 的回复:

3楼的方式好用。
Class activity = Class.forName("com.example.tt.newActivity");
Intent intent = new  Intent(this, activity);
startActivity(intent);

又找了一下资料,发现自带的方法也可以使用。
看起来内部就是使用反射实现的。
String strPackage = MainActivity.this.getPackageName();
intent.setComponent(new ComponentName(strPackage, strPackage + "." + "newActivity"));
startActivity(intent);


现在的问题是,使用反射需要这个异常。
public void button1Click(View v) throws ClassNotFoundException{
但是不太懂为什么要声明这个异常,就算不声明,不是出了异常也是一样的往外抛么?

另外java的反射没用过,但是C#的反射就效率很差,不知道java的是不是也一样。。。


这么简单的一个东西为什么搞那么复杂?为每个activity定义一个action很难吗?根据action来启动不比反射什么的方便点吗?

肯定不会,以后代码你加一个activity就得再定义一个action,破坏封装。
用上面两种方法,添加新窗体不用定义action。
另外建好的窗体拿到别的程序里面用什么都不用修改。
补充:移动开发 ,  Android
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,