由于跳转到的activity不固定,由服务器端配置手机客户端的显示状况,而且activity的数量也不固定,所以不能用选择判断。
希望实现以下方式达成跳转。
Activity act = Activity.Parse("myActivity"); // myActivity是用jason传过来的参数
Intent intent = new Intent(this, act.class);
startActivity(intent);
想在就是想找个类似Parse之类的方法可使让字符串转成具体的类型来跳转。
9 个解决方案
#2
activity的数量也不固定????
怎么会不固定的呢,那你是不是要先在AndroidManifest.xml注册呢?
怎么会不固定的呢,那你是不是要先在AndroidManifest.xml注册呢?
#3
Class send = Class.forName(sendClass);
intent.setClass(thisActivity.this, send);
sendclass就是个字符串
intent.setClass(thisActivity.this, send);
sendclass就是个字符串
#4
反射是吧? 楼上是对的
#5
用反射啊,3L正解
#6
反射是一种好方式
#7
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的是不是也一样。。。
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的是不是也一样。。。
#8
这么简单的一个东西为什么搞那么复杂?为每个activity定义一个action很难吗?根据action来启动不比反射什么的方便点吗?
#9
肯定不会,以后代码你加一个activity就得再定义一个action,破坏封装。
用上面两种方法,添加新窗体不用定义action。
另外建好的窗体拿到别的程序里面用什么都不用修改。
#1
可以为每个activity事先定义好action,根据action来启动.
http://blog.csdn.net/elfylin/article/details/6001460
http://blog.csdn.net/elfylin/article/details/6001460
#2
activity的数量也不固定????
怎么会不固定的呢,那你是不是要先在AndroidManifest.xml注册呢?
怎么会不固定的呢,那你是不是要先在AndroidManifest.xml注册呢?
#3
Class send = Class.forName(sendClass);
intent.setClass(thisActivity.this, send);
sendclass就是个字符串
intent.setClass(thisActivity.this, send);
sendclass就是个字符串
#4
反射是吧? 楼上是对的
#5
用反射啊,3L正解
#6
反射是一种好方式
#7
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的是不是也一样。。。
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的是不是也一样。。。
#8
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来启动不比反射什么的方便点吗?
#9
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。
另外建好的窗体拿到别的程序里面用什么都不用修改。