My project allows user can use slide menu function (on the left). On slide menu, user can select 4 items: Zero, One, Two, and Three. My project has action bar.
When user clicked Zero item, a screen is displayed. When user clicked One, Two, Three, screen is displayed and similar. One, Two, and Three Screen is designed as TabView. You can see project to understand it easier:
With Zero item it runs OK. However, I meet problem when coding One, Two, Three. When I select them, error happens. I don't know more about Fragment and Tabhost.
Here is code where I selected an any item (in MainActivity.java):
private void selectItem(int position) {
// update the main content by replacing fragments
switch (position) {
case 0:
Fragment fragment = new ZeroItem();
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.content_frame, fragment).commit();
break;
case 1: break;
case 2: break;
case 3: break;
}
}
Case 0 (it means you select Zero item, Zero Item screen is displayed) ZeroItem.java
package com.example.android.navigationdrawerexample;
import android.os.Bundle;
import android.app.Activity;
import android.app.Fragment;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
public class ZeroItem extends Fragment {
public ZeroItem() {
// Empty constructor required for fragment subclasses
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.activity_zero_item,
container, false);
return rootView;
}
}
Now, I want you help me write code in case 1, case 2, case 3. It's similar. It must call TabHost.java
Here is TabHost:
package com.ramesh.fragmenttabhostdemo;
import com.example.android.navigationdrawerexample.R;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentTabHost;
import android.view.Menu;
public class TabHost extends FragmentActivity {
private FragmentTabHost mTabHost;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.bottom_tabs);
// mTabHost = new FragmentTabHost(this);
// mTabHost.setup(this, getSupportFragmentManager(),
// R.id.menu_settings);
mTabHost = (FragmentTabHost) findViewById(android.R.id.tabhost);
mTabHost.setup(this, getSupportFragmentManager(), R.id.realtabcontent);
Bundle b = new Bundle();
b.putString("key", "1");
mTabHost.addTab(mTabHost.newTabSpec("1").setIndicator("1"),
OneItem.class, b);
//
b = new Bundle();
System.out.print("hello git");
b.putString("key", "2");
mTabHost.addTab(mTabHost.newTabSpec("2")
.setIndicator("2"), TwoItem.class, b);
b = new Bundle();
b.putString("key", "3");
mTabHost.addTab(mTabHost.newTabSpec("3").setIndicator("3"),
ThreeItem.class, b);
// setContentView(mTabHost);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
OneItem.java
package com.ramesh.fragmenttabhostdemo;
import com.example.android.navigationdrawerexample.R;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
public class OneItem extends Fragment {
private TextView text;
public OneItem() {
// TODO Auto-generated constructor stub
}
@Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
View v = LayoutInflater.from(getActivity()).inflate(R.layout.layout,
null);
text = (TextView) v.findViewById(R.id.text);
if (getArguments() != null) {
//
try {
String value = getArguments().getString("key");
text.setText("1");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return v;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onActivityCreated(savedInstanceState);
}
//
}
TwoItem.java
package com.ramesh.fragmenttabhostdemo;
public class TwoItem extends OneItem {
}
ThreeItem.java
package com.ramesh.fragmenttabhostdemo;
import com.ramesh.fragmenttabhostdemo.OneItem;
import com.ramesh.fragmenttabhostdemo.TwoItem;
import android.os.Bundle;
import android.support.v4.app.FragmentTabHost;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class ThreeItem extends OneItem {
private FragmentTabHost mTabHost;
@Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
mTabHost = new FragmentTabHost(getActivity());
Bundle b = new Bundle();
b.putString("key", "1");
mTabHost.addTab(mTabHost.newTabSpec("1").setIndicator("1"),
OneItem.class, b);
//
b = new Bundle();
b.putString("key", "2");
mTabHost.addTab(mTabHost.newTabSpec("2")
.setIndicator("2"), TwoItem.class, b);
return mTabHost;
}
}
Can you download my project here.