相关疑难解决方法(0)

如果我在XML布局中声明一个片段,我该如何将它传递给Bundle?

我有一个活动,我用片段替换了.该活动采用了一个Intent,它有一些关于活动应该显示的数据的额外信息.

既然我的Activity只是一个包含同样功能的Fragment的包装器,那么如果我用XML标记带有标签的XML片段,我如何将该包带到Fragment?

如果我使用FragmentTransaction将Fragment放入ViewGroup,我将有机会在Fragment构造函数中传递此信息,但我想知道片段是用XML定义的情况.

java xml android fragment

62
推荐指数
5
解决办法
2万
查看次数

Xml名称空间声明:自动替换包名称

我有一个带有多个构建目标的android项目(使用ant).出于测试目的,这些构建目标都具有不同的包名称(因此我的包名称为com.mycompany.myapp用于发布版本,com.mycompany.myapp.test用于测试版本).

除了布局文件中的自定义xml命名空间之外,这在大多数情况下都很有效.所以这:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:custom="http://schemas.android.com/apk/res/com.mycompany.myapp" />
Run Code Online (Sandbox Code Playgroud)

只要用com.mycompany.myapp.test替换包名称,它就会停止工作.
因此,我必须在预构建期间每次替换com.mycompany.myapp值.并且因为所有这些文件都应该是vcs,并且每次一个人切换配置并且它们合并时不应该发生冲突,我不得不将布局文件移动到特定的配置文件夹中,它们看起来像:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:custom="http://schemas.android.com/apk/res/@CONFIG.PACKAGENAME@" />
Run Code Online (Sandbox Code Playgroud)

现在这些文件存储在vcs中,并且在预构建期间替换了@ CONFIG.PACKAGENAME @,然后将文件从./config/file.xml复制到./res/layout/file.xml.

这非常不方便,并且不能很好地扩展(我无法想象在构建脚本中提到50个文件中的每一个).

所以我的问题是:有没有办法在命名空间声明中自动使用当前包名?或者至少是modife布局文件(或构建文件?),这样我每次更改包名时都不必替换com.mycompany.myapp.

xml ant android android-layout

47
推荐指数
1
解决办法
4万
查看次数

从活动中设置片段的参数

我想将我的活动中的参数传递给嵌入到活动中的片段.片段静态嵌入xml布局中.我试着像这样调用setArgument():

setContentView(R.layout.detail_activity);
DetailFragment detailFragment = (DetailFragment) getFragmentManager().findFragmentById(R.id.detailFragment);
detailFragment.setArguments(getIntent().getExtras());
Run Code Online (Sandbox Code Playgroud)

但是已经太晚了,因为必须在片段创建后立即调用setArguments.唯一的是我看到getArguments()和更改捆绑.有更好的方法吗?

android android-fragments android-activity

24
推荐指数
2
解决办法
3万
查看次数

是否可以在XML中传递构造函数参数?

我正在编写一个扩展Fragment的类,我想在XML文件中使用它.对于我的类,我有一个构造函数,它接受一个参数,指定片段应如何布局其UI.

我想在XML中使用我的类,但是也想指定这个布局参数,但是可以将它包含在XML中吗?

android

3
推荐指数
1
解决办法
3025
查看次数

如何将Bundle传递给片段

首先让我说,我希望在飓风桑迪之后,东海岸的每个人都可以.我很幸运,虽然我住在纽约市,但我从未失去权力.我的想法告诉那些不那么幸运的人.现在我三天后回来工作了,我需要一些片段的帮助.我正在尝试将Bundle传递给Fragment并且它无法正常工作.我知道我的通用片段设置正确,因为如果我不尝试通过Bundle,它可以正常工作.所以这是我的活动,我通过Bundle:

public void onItemClick(AdapterView<?> parent, View view, int position,
                long id) {
            Intent choice = new Intent(getApplicationContext(), com.MyProject.project.MyList.class);
            Bundle dataBundle = new Bundle();
            String chosenValue = values[position];
            dataBundle.putString("Level",chosenValue);
            choice.putExtras(dataBundle);
            startActivity(choice);  }
Run Code Online (Sandbox Code Playgroud)

现在这是我没有Bundle的活动.这很好用:

public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
        String[] values = new String[] { "Enterprise", "Star Trek", "Next Generation", "Deep Space 9", "Voyager"};
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, values);
        setListAdapter(adapter);

}
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试从Bundle获取信息时,它不起作用.这是我的代码:

public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    Bundle info = getArguments();


    String level = info.getString("level");
    String[] values = …
Run Code Online (Sandbox Code Playgroud)

android android-fragments

3
推荐指数
1
解决办法
7757
查看次数