M.S.P M.S.P - 6 months ago 33
Android Question

Error No suitable method found for add(int, Fragment)

I was trying to inflate a fragment in an Activity and here is the code.

public class DetailActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_detail);
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.add(R.id.container2, new DetailFragment())
.commit(); //Line with Error
}
}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.detail, menu);
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();

//noinspection SimplifiableIfStatement
if (id == R.id.action_refresh) {
return true;
}

return super.onOptionsItemSelected(item);
}
}


And here is my
DetailFragment
class

/**
* A placeholder fragment containing a simple view.
*/
public class DetailFragment extends Fragment {

public DetailFragment() {
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {

View rootView = inflater.inflate(R.layout.fragment_detail, container, false);
return rootView;
}
}


Here goes the layout for
fragment_detail


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:textSize="18sp"
android:id="@+id/fragment_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>


The error I am facing is
cannot resolve method 'add(int,com.example...DetailFragment)'
. As, I am beginner to android, please also guide me on how should I go about, tackling such type of errors.

Answer

Your DetailFragment need to extends from android.support.v4.app.Fragment instead of Fragment. Something like this

public class DetailFragment extends android.support.v4.app.Fragment {

 ......
}