比如我有10个activity,可能会有更多。
由于跳转到的activity不固定,由服务器端配置手机客户端的显示状况,而且activity的数量也不固定,所以不能用选择判断。
希望实现以下方式达成跳转。
Activity act = Activity.Parse("myActivity");      // myActivity是用jason传过来的参数
Intent intent = new  Intent(this, act.class);     
startActivity(intent);
想在就是想找个类似Parse之类的方法可使让字符串转成具体的类型来跳转。

解决方案 »

  1.   

    可以为每个activity事先定义好action,根据action来启动.
    http://blog.csdn.net/elfylin/article/details/6001460
      

  2.   

    activity的数量也不固定????
    怎么会不固定的呢,那你是不是要先在AndroidManifest.xml注册呢?
      

  3.   

    Class send = Class.forName(sendClass);
    intent.setClass(thisActivity.this, send);sendclass就是个字符串
      

  4.   

    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的是不是也一样
      

  5.   


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

  6.   


    这么简单的一个东西为什么搞那么复杂?为每个activity定义一个action很难吗?根据action来启动不比反射什么的方便点吗?
    肯定不会,以后代码你加一个activity就得再定义一个action,破坏封装。
    用上面两种方法,添加新窗体不用定义action。
    另外建好的窗体拿到别的程序里面用什么都不用修改。