【问题标题】:Cannot Resolve method Android Studio无法解决方法 Android Studio
【发布时间】:2014-09-29 13:55:36
【问题描述】:

如何解决此错误?我收到此代码错误:

无法解析方法'add(int, android.trey.startingpoint.nl.SecondActivity.PlaceHolderFragment)'

    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_second);

    if (savedInstanceState == null) {
        getFragmentManager().beginTransaction()
                .add(R.id.container, new PlaceholderFragment()).commit();
    }
}

 public static class PlaceholderFragment extends Fragment {

    public PlaceholderFragment() {
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_second, container, false);
        return rootView;
    }
}

感谢您的帮助!

编辑:进口:

导入android.app.Activity; 导入android.support.v4.app.Fragment;

导入android.os.Bundle;导入 android.view.LayoutInflater;进口 android.view.菜单;导入android.view.MenuItem;进口 android.view.查看;导入android.view.ViewGroup;进口 android.widget.Toast;

导入 com.google.android.gms.maps.CameraUpdateFactory;进口 com.google.android.gms.maps.GoogleMap;进口 com.google.android.gms.maps.MapFragment;进口 com.google.android.gms.maps.model.BitmapDescriptorFactory;进口 com.google.android.gms.maps.model.CameraPosition;进口 com.google.android.gms.maps.model.LatLng;进口 com.google.android.gms.maps.model.MarkerOptions;

【问题讨论】:

  • 将 PlaceholderFragment() 转换为 Fragment。 ...而且我相信您在同一个 .java 文件中没有两个类,是吗?
  • 对不起,我不明白
  • PlaceholderFragment 是 v4 SupportFragment 吗?
  • 你能告诉我们进口吗?因为您可能使用的不是 v4 片段

标签: android android-fragments android-studio


【解决方案1】:

PlaceholderFragment 可能是一个支持片段。

将 getFragmentManager 更改为 getSupportFragmentManager(),如下所示:

if (savedInstanceState == null) {
    getSupportFragmentManager().beginTransaction()
            .add(R.id.container, new PlaceholderFragment()).commit();
}

您的活动还必须扩展 FragmentActivity。

注意:

如果您不打算使用支持片段,那么您只需更改片段的导入即可。

更改导入android.support.v4.app.Fragment;导入android.app.Fragment;

【讨论】:

  • 如果是这种情况,修复进口对他来说会更容易
  • 是的,我发现了这一点,但是当我改变它时,我得到一个错误,说无法解析方法获取 supportFragmentManager,如果我导入导入 android.support.v4.app.FragmentManager;它只是保持未使用状态
  • @ImAtWar 请您发布您的导入
  • 已编辑。但由于这是第二个活动,我在主要活动中使用了更多进口商品
【解决方案2】:

试试这个:

change getFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment()).commit();
to 
getSupportFragmentManager().beginTransaction()
.replace(R.id.container, new PlaceholderFragment()).commit();

【讨论】:

    【解决方案3】:

    import android.app.Fragment; 更改为android.support.v4.app.Fragment;

    喜欢

    import android.os.Bundle;
    import android.support.v4.app.Fragment;
    import android.support.v7.app.AppCompatActivity;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    
    
    public class MainActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            if (savedInstanceState == null) {
                getSupportFragmentManager().beginTransaction()
                        .add(R.id.container, new PlaceholderFragment()).commit();
            }
        }
    
        public static class PlaceholderFragment extends Fragment {
            public PlaceholderFragment(){
            }
    
            @Override
            public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState){
                View rootView = inflater.inflate(R.layout.fragment_main, container, false);
                return rootView;
            }
        }
    }
    

    【讨论】:

      【解决方案4】:

      在您的片段文件中 使用import android.support.v4.app.Fragment;

      而不是import android.app.Fragment;

      可以解决它;

      示例如下:

      在您的活动文件中:

       @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_set_travel_message);
      
          TravelMessageFragment fragment = new TravelMessageFragment();
          getSupportFragmentManager().beginTransaction().add(R.id.travelInit,fragment).commit();
      
      }
      

      比在你的片段文件中:

      import android.support.v4.app.Fragment;
      import android.os.Bundle;
      import android.view.LayoutInflater;
      import android.view.View;
      import android.view.ViewGroup;
      
      public class TravelMessageFragment extends Fragment{
      private View view;
      @Override
      public View onCreateView(LayoutInflater inflater, ViewGroup group, Bundle savedInstanceState) {
          view = inflater.inflate(R.layout.fragment_travel_message, group, false);
      
          return view;
      }
      }
      

      【讨论】:

        【解决方案5】:

        无法解析方法'add(int, android.trey.startingpoint.nl.SecondActivity.PlaceHolderFragment)'

        改变两件事

        第一件事:

        您可以创建类“android.trey.startingpoint.nl.SecondActivity.PlaceHolderFragment”的对象,而不是放置类名

        喜欢

        if(findViewById(R.id.fragment_container) != null) {
        
        if(savedInstanceState != null) {
        
        return;
        
        }
        PlaceHolderFragment mFragment = new PlaceHolderFragment();
        
        mFragment.setArguments(getIntent().getExtras());
        
        getSupportFragmentManager().beginTransaction().add(R.id.fragment_container,th
        irdFragment).commit();
        
        }
        

        第二件事:

        转到类文件 PlaceHolderFragment 并从“android.support.app.Fragment”更改导入“android.support.v4.app.Fragment”

        【讨论】:

          【解决方案6】:

          import android.support.v4.app.Fragment; 更改为import android.app.Fragment;

          还有getSupportFragmentManager()

          getFragmentManager
              {
              if (savedInstanceState == null) 
                  {
                   getFragmentManager().beginTransaction().add(R.id.container, new PlaceholderFragment()).commit();
                   }
          

          对我有用

          【讨论】: