在搜索时,布局一次又一次地膨胀

时间:2014-08-07 06:03:06

标签: android layout-inflater android-search

我有一个片段DefaultMapFragment,它扩展了片段,让我的布局充气。

这个片段位于一个活动ActivityMain内。当我搜索它时会在一个活动中进行搜索,因此布局通胀会一次又一次地发生。

这是我的代码,用于描述我正在做的事情:

protected void onCreate(Bundle savedInstanceState)
{
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);

    setContentView(R.layout.add_geofence_layout);
    Intent mIntent = getIntent();

    if(!(mIntent.getAction().equals(Intent.ACTION_SEARCH)))
    {
        mFragmentManager  = getFragmentManager();

        mTransaction = mFragmentManager.beginTransaction();

        mTransaction.add(R.id.add_layout, new DefaultMapFragment(),"defaultMapFragment").commit();

        mGeocoder = new Geocoder(this, Locale.getDefault());
    }


    handleIntent(getIntent());


}

所以我认为如果我正在搜索这个条件就足够了,但它根本不会膨胀,所以我的地图不会显示。

在这种情况下我该怎么做?

2 个答案:

答案 0 :(得分:0)

您可以使用标志布尔变量并初始将其设置为false。当您第一次搜索时将其设为真,并且在每次搜索中只检查其状态是否膨胀。

答案 1 :(得分:0)

您始终在创建新片段。

写下类似的内容:

protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);

setContentView(R.layout.add_geofence_layout);
    Intent mIntent = getIntent();
if(!(mIntent.getAction().equals(Intent.ACTION_SEARCH)))
{
   Fragment fragment = fm.findFragmentByTag("defaultMapFragment");
 if (fragment == null) {
        mFragmentManager  = getFragmentManager();
mTransaction = mFragmentManager.beginTransaction();
mTransaction.add(R.id.add_layout, new DefaultMapFragment(),"defaultMapFragment").commit();
mGeocoder = new Geocoder(this, Locale.getDefault());
    }}
handleIntent(getIntent());
}