【问题标题】:Adding activities dynamically动态添加活动
【发布时间】:2015-05-26 18:33:26
【问题描述】:

关于我的代码的一些细节:

我得到一个JSONObject,然后我从中获取字符串并使用字段"name",我创建的buttonsfields 中的fields 一样多。

现在,我也想为buttons 添加功能,但我不确定它是否会以这种方式工作。

请检查我的代码,我会评论我卡在哪里。

for(int i=0; i<arr.length();i++){

    JSONObject oneObject = arr.getJSONObject(i);

    id = oneObject.getString("Id");
    nume = oneObject.getString("Nume");

    Button btn = new Button(context);
    btn.setId(i);
    btn.setText(nume);
    btn.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
        //STUCK HERE!

        }
    });

    ll.addView(btn);
}   

所以,对于每个button,我想创建一个新的活动,所以一个新的intent,因为每个button 都需要一个新的"screen"(或者可以这么说)。

有什么方法可以让我真正做到这一点,或者这是不可能的?

注意:我在互联网上找不到类似的东西,我的想法是这是不可能的,但在我继续之前我想要更多的意见。

【问题讨论】:

  • Activity 与 AndoidManifest.xml 文件相关联,不是吗?恕我直言,这看起来像是一个典型的 Fragment 可解决问题。
  • 是的,它们确实是 AndroidManifset 绑定的。无论如何,据我所知,这是不可能的。无论如何你会如何处理片段?我也使用过片段,我非常怀疑它会根据需要为每个片段创建一个新的 xml 布局和一个新的 java 类...
  • 好吧,你只需要一个通用的 Fragment 类,它通过它的构造函数接收一些变量。您不需要为每个班级开设一个新班级。除非您可以发送一些 json 来区分样式,否则它将始终具有相同的布局,但这不是问题 - 您可以在创建 Fragment 时为其加载不同的样式。
  • 这意味着我的 mainactivity 将实现 Fragment,对吗?这样我就可以进行过渡...?
  • 不,你应该让它扩展 FragmentActivity 以便它可以容纳 Fragment。然后,您可以使用转换来动态添加/删除片段,让用户看起来就像您正在更改 Activity。

标签: android android-activity


【解决方案1】:

就像我们在 cmets 中所说的那样,动态创建活动将不起作用,因为您无法在运行时修改 AndroidManifest.xml。相反,这个问题非常适合Fragments

您可以使用标准 Activity 而不是 FragmentActivity,但 here's 是我认为您不应该使用的原因。然后,您只需将其用作您的根活动,并在您的 onClicks 中以编程方式添加片段:

FragmentManager fragMan = getFragmentManager();
FragmentTransaction fragTransaction = fragMan.beginTransaction();

Fragment fragment = new ImageFragment();
fragTransaction.add(R.id.fragment_container, fragment);
fragTransaction.commit();

here 的所有内容都有一个很好的指南。

【讨论】:

  • 我还没有测试过,但这是我需要的,我相当确定它。我会检查答案并给一个大拇指。感谢您的建议和实际答案。跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多