ADT blank activity created with fragment activity

I am really confused right now because whenever I create a new Android app with blank activity it always comes out with fragment_main.xml. I just wanted to create a blank activity without the fragment one.

In the first image the blank activity comes with the fragment layout:

first image blank activity

The second image shows the created fragment_main

second image blank activity

Now I am really confused... this only happened after updating ADT to the latest version. I have referred to this thread: Adt doesn't create default hello world but command line does_

I just wanted to make an Android app with blank activity with no fragment view.


Solution 1:

For those who would like instructions on how to remove Fragments from the project:

1) Copy all the contents of res/layout/fragment_main.xml. Open activity_main.xml, delete the FrameLayout, and paste in the copied contents.

2) Delete fragment_main.xml

3) In MainActivity.java, delete the whole PlaceHolderFragment class:

/**
 * A placeholder fragment containing a simple view.
 */
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) Delete the following lines from onCreate():

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

At this point you should be all set to run the project.

Solution 2:

You can use the previous template by editing the template files inside the Android SDK folder. But, make sure you have a backup of the "BlankActivity" folder.

  • Go to /templates/tools/templates/activities/BlankActivity

  • Locate the template.xml file and locate the following piece of code

     <parameter
      id="fragmentLayoutName"
      name="Fragment Layout Name"
      type="string"
      constraints="layout|unique|nonempty"
      suggest="fragment_${classToResource(activityClass)}"
      default="fragment_main"
      help="The name of the layout to create for the activity's content fragment" />
    

and change the constraints to constraints="empty".

  • Locate recipie.xml.ftl and locate the following piece of code
    <instantiate from="res/layout/fragment_simple.xml.ftl" to="${escapeXmlAttribute(resOut)}/layout/${fragmentLayoutName}.xml" />
    and comment the whole line.

  • Locate SampleActivity.java.ftl file inside root/src/app_package and delete these two lines
    <#include "include_options_menu.java.ftl"> <#include "include_fragment.java.ftl">

  • Locate fragment_simple.xml.ftl and activity_fragment_container.xml.ftl file inside root/res/layout. Copy the contents of fragment_simple.xml.ftl file to activity_fragment_container.xml.ftl file.

Now when you try to create a new activity, you'll get this screen new activity without fragment

You can leave the Fragment Layout Name field blank.

This works fine for me in the case of blank activity. I'm not sure if this is the right approach, with discarding fragments and all, but this works for me.

Solution 3:

This is a new feature of ADT version 22.6.0: http://developer.android.com/tools/sdk/eclipse-adt.html

Edit: With the latest ADT updates there is a new template called "Empty Activity" that has no fragments. it's a plain class that extends Activity (Even without the default menu).

Notice that there is also a "Blank Activity" which extends ActionBarActivity and has fragments

Solution 4:

Thank you to the person that reported this, https://code.google.com/p/android/issues/detail?id=67513

This was my first glimpse into android-review.googlesource.com. Digging around I didn’t see a way to download the patch set that was put together and I’m unsure how to “cherry pick” tools_r22.6, If there's a thread that explains it a link would be appreciated.

Here’s how I went about it.

On your machine navigate to your SDK folder then \tools\templates\activities

Copy the BlankActivities folder and paste it into the same directory.

Rename BlankActivities_copy to EmptyActivities

Go to https://android-review.googlesource.com/#/c/88890/4

Under the Files section there is a list of links. Each link directs you to the xml that needs to be added to the new EmptyActivities folder you created.

Copy the xml from the right pane to the path\file at the top of the left pane(the link was also the path). If the file already exists delete the contents and replace. If the file doesn’t exist, create it and copy the xml into the file.

Repeat for each of the links.

Close and reopen Eclipse. If you have any of the files open in an editor Eclipse will crash.

Thank you to Josiah Gaskin at google with the unbelievable 2 day turnaround!

No training literature references the fragments in the BlankActivity. I’m sure this fix saved me countless hours trying to figure out how to navigate around fragments while trying to learn a new IDE. Thanks again.