Android 片段部分时间显示
我有一个导航抽屉,菜单中有几个片段,在第一个片段中,当在gridView中按下一个项目时,我想启动一个不同的片段,我没有收到错误,但有时片段会显示,有时它不会显示 thc调用片段是HomeFragment: opend片段是InstrumentsFragment 以下是容器布局:drawr布局:Android 片段部分时间显示,android,android-fragments,Android,Android Fragments,我有一个导航抽屉,菜单中有几个片段,在第一个片段中,当在gridView中按下一个项目时,我想启动一个不同的片段,我没有收到错误,但有时片段会显示,有时它不会显示 thc调用片段是HomeFragment: opend片段是InstrumentsFragment 以下是容器布局:drawr布局: <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/andr
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- Framelayout to display Fragments -->
<FrameLayout
android:id="@+id/frame_container"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<!-- Listview to display slider menu -->
<ListView
android:id="@+id/list_slidermenu"
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:choiceMode="singleChoice"
android:divider="@color/list_divider"
android:dividerHeight="1dp"
android:listSelector="@drawable/list_selector"
android:background="@color/list_background"/>
</android.support.v4.widget.DrawerLayout>
因此,从HomeFragment到InstrumentsFragment,我以这种方式调用:
final FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.frame_container, new InstrumentsFragment(), "InstrumentsFragment");
ft.addToBackStack(null);
ft.commit();
我没有错,只是有时候有用,有时候不行!
有什么问题吗
编辑:
完整代码:
包含导航抽屉的类:
public class MainOptionsActivity extends Activity
{
private DrawerLayout mDrawerLayout;
private ListView mDrawerList;
private ActionBarDrawerToggle mDrawerToggle;
ParseUser user = ParseUser.getCurrentUser();
// nav drawer title
private CharSequence mDrawerTitle;
ArrayList<String> resultCompanys = new ArrayList<String>();
ArrayList<String> resultModels = new ArrayList<String>();
ArrayList<String> resultPrices = new ArrayList<String>();
ArrayList<String> resultStores = new ArrayList<String>();
ArrayList<String> resultUrls = new ArrayList<String>();
ArrayList<String> followedObjIds = new ArrayList<String>();
ArrayList<String> urlsForUpdate = new ArrayList<String>();
boolean changeInFollowedItems = false;
String currentUrl = "";
String[] urlsArray = {"http://www.music-","http://www.kolhamusica" , "http://www.diez.co"};
// used to store app title
private CharSequence mTitle;
protected OnBackPressedListener onBackPressedListener;
// slide menu items
private String[] navMenuTitles;
private TypedArray navMenuIcons;
private ArrayList<NavDrawerItem> navDrawerItems;
private NavDrawerListAdapter adapter;
int locationOfCompany = 0 , fragmentIdFromIntent = -1;
String tmpCompany = "";
CustomAdapter followsAdapter;
boolean doubleBackToExitPressedOnce = false;
String urlToFetchFrom = "" ;
ArrayList<String> gPricesAsist = new ArrayList<String>();
ArrayList<String> afterUpdatePrices = new ArrayList<String>();
ArrayList<String> changedPricesObjIds = new ArrayList<String>();
ArrayList<String> ObjIdsForNotifications = new ArrayList<String>();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
ArrayList<ParseObject> alPobjs = new ArrayList<ParseObject>();
ParseObject pObj ;
String urlForUpdatePrice = "" , objIdToUpdate = "";
String finalPriceForUpdate = "";
String currentOldPrice="";
int location;
Date currentDate;
String[] months = {"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"};
String[] monthsInNumsFormat = {"0","1","2","3","4","5","6","7","8","9","10","11"};
boolean[] pricesWereChanged;
String[] urlsForJsoup;
boolean userHasFollowedItems = false;
Document doc;
ParseQuery<ParseObject> pq;
Context context = this;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.drawr_layout);
/////////////////////////////////////////////////////////////////////////
mTitle = mDrawerTitle = getTitle();
//////////////////////////////////////////////////////////////////////
// load slide menu items
navMenuTitles = getResources().getStringArray(R.array.nav_drawer_items);
// nav drawer icons from resources
navMenuIcons = getResources()
.obtainTypedArray(R.array.nav_drawer_icons);
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawerList = (ListView) findViewById(R.id.list_slidermenu);
navDrawerItems = new ArrayList<NavDrawerItem>();
// adding nav drawer items to array
// Home
navDrawerItems.add(new NavDrawerItem(navMenuTitles[0], navMenuIcons.getResourceId(0, -1)));
// Find People
navDrawerItems.add(new NavDrawerItem(navMenuTitles[1], navMenuIcons.getResourceId(1, -1)));
// Photos
navDrawerItems.add(new NavDrawerItem(navMenuTitles[2], navMenuIcons.getResourceId(2, -1)));
// Communities, Will add a counter here
navDrawerItems.add(new NavDrawerItem(navMenuTitles[3], navMenuIcons.getResourceId(3, -1)));
// Recycle the typed array
navMenuIcons.recycle();
mDrawerList.setOnItemClickListener(new SlideMenuClickListener());
// setting the nav drawer list adapter
adapter = new NavDrawerListAdapter(getApplicationContext(),
navDrawerItems);
mDrawerList.setAdapter(adapter);
// enabling action bar app icon and behaving it as toggle button
getActionBar().setDisplayHomeAsUpEnabled(true);
getActionBar().setHomeButtonEnabled(true);
mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,
R.drawable.ic_drawer, //nav menu toggle icon
R.string.app_name, // nav drawer open - description for accessibility
R.string.app_name // nav drawer close - description for accessibility
) {
public void onDrawerClosed(View view) {
getActionBar().setTitle(mTitle);
// calling onPrepareOptionsMenu() to show action bar icons
invalidateOptionsMenu();
}
public void onDrawerOpened(View drawerView) {
getActionBar().setTitle(mDrawerTitle);
// calling onPrepareOptionsMenu() to hide action bar icons
invalidateOptionsMenu();
}
};
mDrawerLayout.setDrawerListener(mDrawerToggle);
if (savedInstanceState == null) {
// on first time display view for first nav item
displayView(0);
}
fragmentIdFromIntent = getIntent().getIntExtra("fragmentIdFromIntent", -1);
if(fragmentIdFromIntent != -1)
{
displayView(fragmentIdFromIntent-1);
}
}
/**
* Slide menu item click listener
* */
public class SlideMenuClickListener implements
ListView.OnItemClickListener {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
// display view for selected nav drawer item
displayView(position);
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// toggle nav drawer on selecting action bar app icon/title
if (mDrawerToggle.onOptionsItemSelected(item)) {
return true;
}
// Handle action bar actions click
switch (item.getItemId()) {
default:
return super.onOptionsItemSelected(item);
}
}
/* *
* Called when invalidateOptionsMenu() is triggered
*/
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
// if nav drawer is opened, hide the action items
boolean drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList);
return super.onPrepareOptionsMenu(menu);
}
/**
* Diplaying fragment view for selected nav drawer list item
* */
private void displayView(int position) {
// update the main content by replacing fragments
Fragment fragment = null;
switch (position) {
case 0:
fragment = new HomeFragment();
break;
case 1:
fragment = new SecondFragment();
break;
case 2:
fragment = new ThirdFragment();
break;
case 3:
fragment = new ForthFragment();
break;
default:
break;
}
if (fragment != null) {
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.frame_container, fragment).commit();
// update selected item and title, then close the drawer
mDrawerList.setItemChecked(position, true);
mDrawerList.setSelection(position);
setTitle(navMenuTitles[position]);
mDrawerLayout.closeDrawer(mDrawerList);
} else {
// error in creating fragment
Log.e("MainActivity", "Error in creating fragment");
}
}
@Override
public void setTitle(CharSequence title) {
mTitle = title;
getActionBar().setTitle(mTitle);
}
/**
* When using the ActionBarDrawerToggle, you must call it during
* onPostCreate() and onConfigurationChanged()...
*/
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
// Sync the toggle state after onRestoreInstanceState has occurred.
mDrawerToggle.syncState();
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
// Pass any configuration change to the drawer toggls
mDrawerToggle.onConfigurationChanged(newConfig);
}
}
public class main选项活动扩展活动
{
私人抽屉布局mDrawerLayout;
私有列表视图mDrawerList;
私有操作bardrawertoggle mDrawerToggle;
ParseUser=ParseUser.getCurrentUser();
//导航抽屉标题
私有字符序列mDrawerTitle;
ArrayList resultCompanys=新建ArrayList();
ArrayList resultModels=新建ArrayList();
ArrayList resultPrices=新的ArrayList();
ArrayList resultStores=新的ArrayList();
ArrayList resultUrls=新的ArrayList();
ArrayList followDobjids=新的ArrayList();
ArrayList urlsForUpdate=新的ArrayList();
布尔ChangeInfoAllowedItems=false;
字符串currentUrl=“”;
字符串[]urlsArray={”http://www.music-","http://www.kolhamusica" , "http://www.diez.co"};
//用于存储应用程序标题
私有字符序列mTitle;
受保护的OnBackPressedListener OnBackPressedListener;
//幻灯片菜单项
私有字符串[]navMenuTitles;
专用型雷达导航仪;
私人ArrayList NavWrites;
专用导航适配器;
int locationOfCompany=0,fragmentIdFromIntent=-1;
字符串tmpCompany=“”;
自定义适配器;
布尔值doubleBackToExitPressedOnce=false;
字符串urlToFetchFrom=“”;
ArrayList gpriceSist=新的ArrayList();
ArrayList afterUpdatePrices=新的ArrayList();
ArrayList changedPricesObjIds=新的ArrayList();
ArrayList ObjIdsForNotifications=新建ArrayList();
SimpleDataFormat sdf=新的SimpleDataFormat(“yyyy/MM/dd”);
ArrayList alPobjs=新的ArrayList();
ParseObject-pObj;
字符串urlForUpdatePrice=“”,objIdToUpdate=“”;
字符串finalPriceForUpdate=“”;
字符串currentldprice=“”;
int定位;
日期当前日期;
字符串[]个月={“一月”、“二月”、“三月”、“四月”、“五月”、“六月”、“七月”、“八月”、“九月”、“十月”、“十一月”、“十二月”};
字符串[]monthsinumsformat={“0”、“1”、“2”、“3”、“4”、“5”、“6”、“7”、“8”、“9”、“10”、“11”};
布尔值[]价格已更改;
字符串[]urlsForJsoup;
布尔userHasFollowedItems=false;
文件文件;
解析查询pq;
上下文=这个;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.drawr_布局);
/////////////////////////////////////////////////////////////////////////
mTitle=mDrawerTitle=getTitle();
//////////////////////////////////////////////////////////////////////
//加载幻灯片菜单项
navMenuTitles=getResources().getStringArray(R.array.nav\u抽屉\u项目);
//参考资料中的导航抽屉图标
navMenuIcons=getResources()
.obtainTypedArray(R.array.nav_drawer_图标);
mDrawerLayout=(抽屉布局)findViewById(R.id.抽屉布局);
mDrawerList=(ListView)findViewById(R.id.list\u slidermenu);
navDrawerItems=新的ArrayList();
//将导航抽屉项添加到阵列
//家
添加(新的NavDrawerItem(navMenuTitles[0],navMenuIcons.getResourceId(0,-1));
//找人
添加(新的NavDrawerItem(navMenuTitles[1],navMenuIcons.getResourceId(1,-1));
//照片
添加(新的NavDrawerItem(navMenuTitles[2],navMenuIcons.getResourceId(2,-1));
//社区,将在此处添加一个计数器
add(新的NavDrawerItem(navMenuTitles[3],navMenuIcons.getResourceId(3,-1));
//回收类型化数组
navMenuIcons.recycle();
setOnItemClickListener(新的SlideMenuClickListener());
//设置导航抽屉列表适配器
适配器=新的NavDroperListAdapter(getApplicationContext(),
纳维特姆斯);
mDrawerList.setAdapter(适配器);
//启用操作栏应用程序图标并将其作为切换按钮
getActionBar().setDisplayHomeAsUpEnabled(true);
getActionBar().setHomeButtonEnabled(true);
mDrawerToggle=新操作BarDrawerToggle(此,mDrawerLayout,
R.drawable.ic_抽屉,//导航菜单切换图标
R.string.app_name,//导航抽屉打开-可访问性说明
R.string.app_name//nav抽屉关闭-可访问性说明
) {
公共无效onDrawerClosed(视图){
getActionBar().setTitle(mTitle);
//调用onPrepareOptions菜单()以显示操作栏图标
无效操作菜单();
}
打开图纸上的公共空白(视图抽屉视图){
getActionBar().setTitle(mDrawerTitle);
//调用onPrepareOptions菜单()隐藏操作栏图标
无效操作菜单();
}
};
mDrawerLayout.setDrawerListener(mDrawerToggle);
如果(savedInstanceState==null){
//第一个导航项目的首次显示视图
显示视图(0);
}
fragmentIdFromIntent=getIntent().getIntExtra(“fragmentIdFromIntent”,-1);
如果(fragmentIdFromIntent!=-1)
{
显示视图(fragmentIdFromIntent-1);
}
}
/**
*幻灯片菜单项单击“侦听器”
* */
公开课幻灯片
public class MainOptionsActivity extends Activity
{
private DrawerLayout mDrawerLayout;
private ListView mDrawerList;
private ActionBarDrawerToggle mDrawerToggle;
ParseUser user = ParseUser.getCurrentUser();
// nav drawer title
private CharSequence mDrawerTitle;
ArrayList<String> resultCompanys = new ArrayList<String>();
ArrayList<String> resultModels = new ArrayList<String>();
ArrayList<String> resultPrices = new ArrayList<String>();
ArrayList<String> resultStores = new ArrayList<String>();
ArrayList<String> resultUrls = new ArrayList<String>();
ArrayList<String> followedObjIds = new ArrayList<String>();
ArrayList<String> urlsForUpdate = new ArrayList<String>();
boolean changeInFollowedItems = false;
String currentUrl = "";
String[] urlsArray = {"http://www.music-","http://www.kolhamusica" , "http://www.diez.co"};
// used to store app title
private CharSequence mTitle;
protected OnBackPressedListener onBackPressedListener;
// slide menu items
private String[] navMenuTitles;
private TypedArray navMenuIcons;
private ArrayList<NavDrawerItem> navDrawerItems;
private NavDrawerListAdapter adapter;
int locationOfCompany = 0 , fragmentIdFromIntent = -1;
String tmpCompany = "";
CustomAdapter followsAdapter;
boolean doubleBackToExitPressedOnce = false;
String urlToFetchFrom = "" ;
ArrayList<String> gPricesAsist = new ArrayList<String>();
ArrayList<String> afterUpdatePrices = new ArrayList<String>();
ArrayList<String> changedPricesObjIds = new ArrayList<String>();
ArrayList<String> ObjIdsForNotifications = new ArrayList<String>();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
ArrayList<ParseObject> alPobjs = new ArrayList<ParseObject>();
ParseObject pObj ;
String urlForUpdatePrice = "" , objIdToUpdate = "";
String finalPriceForUpdate = "";
String currentOldPrice="";
int location;
Date currentDate;
String[] months = {"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"};
String[] monthsInNumsFormat = {"0","1","2","3","4","5","6","7","8","9","10","11"};
boolean[] pricesWereChanged;
String[] urlsForJsoup;
boolean userHasFollowedItems = false;
Document doc;
ParseQuery<ParseObject> pq;
Context context = this;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.drawr_layout);
/////////////////////////////////////////////////////////////////////////
mTitle = mDrawerTitle = getTitle();
//////////////////////////////////////////////////////////////////////
// load slide menu items
navMenuTitles = getResources().getStringArray(R.array.nav_drawer_items);
// nav drawer icons from resources
navMenuIcons = getResources()
.obtainTypedArray(R.array.nav_drawer_icons);
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawerList = (ListView) findViewById(R.id.list_slidermenu);
navDrawerItems = new ArrayList<NavDrawerItem>();
// adding nav drawer items to array
// Home
navDrawerItems.add(new NavDrawerItem(navMenuTitles[0], navMenuIcons.getResourceId(0, -1)));
// Find People
navDrawerItems.add(new NavDrawerItem(navMenuTitles[1], navMenuIcons.getResourceId(1, -1)));
// Photos
navDrawerItems.add(new NavDrawerItem(navMenuTitles[2], navMenuIcons.getResourceId(2, -1)));
// Communities, Will add a counter here
navDrawerItems.add(new NavDrawerItem(navMenuTitles[3], navMenuIcons.getResourceId(3, -1)));
// Recycle the typed array
navMenuIcons.recycle();
mDrawerList.setOnItemClickListener(new SlideMenuClickListener());
// setting the nav drawer list adapter
adapter = new NavDrawerListAdapter(getApplicationContext(),
navDrawerItems);
mDrawerList.setAdapter(adapter);
// enabling action bar app icon and behaving it as toggle button
getActionBar().setDisplayHomeAsUpEnabled(true);
getActionBar().setHomeButtonEnabled(true);
mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,
R.drawable.ic_drawer, //nav menu toggle icon
R.string.app_name, // nav drawer open - description for accessibility
R.string.app_name // nav drawer close - description for accessibility
) {
public void onDrawerClosed(View view) {
getActionBar().setTitle(mTitle);
// calling onPrepareOptionsMenu() to show action bar icons
invalidateOptionsMenu();
}
public void onDrawerOpened(View drawerView) {
getActionBar().setTitle(mDrawerTitle);
// calling onPrepareOptionsMenu() to hide action bar icons
invalidateOptionsMenu();
}
};
mDrawerLayout.setDrawerListener(mDrawerToggle);
if (savedInstanceState == null) {
// on first time display view for first nav item
displayView(0);
}
fragmentIdFromIntent = getIntent().getIntExtra("fragmentIdFromIntent", -1);
if(fragmentIdFromIntent != -1)
{
displayView(fragmentIdFromIntent-1);
}
}
/**
* Slide menu item click listener
* */
public class SlideMenuClickListener implements
ListView.OnItemClickListener {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
// display view for selected nav drawer item
displayView(position);
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// toggle nav drawer on selecting action bar app icon/title
if (mDrawerToggle.onOptionsItemSelected(item)) {
return true;
}
// Handle action bar actions click
switch (item.getItemId()) {
default:
return super.onOptionsItemSelected(item);
}
}
/* *
* Called when invalidateOptionsMenu() is triggered
*/
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
// if nav drawer is opened, hide the action items
boolean drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList);
return super.onPrepareOptionsMenu(menu);
}
/**
* Diplaying fragment view for selected nav drawer list item
* */
private void displayView(int position) {
// update the main content by replacing fragments
Fragment fragment = null;
switch (position) {
case 0:
fragment = new HomeFragment();
break;
case 1:
fragment = new SecondFragment();
break;
case 2:
fragment = new ThirdFragment();
break;
case 3:
fragment = new ForthFragment();
break;
default:
break;
}
if (fragment != null) {
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.frame_container, fragment).commit();
// update selected item and title, then close the drawer
mDrawerList.setItemChecked(position, true);
mDrawerList.setSelection(position);
setTitle(navMenuTitles[position]);
mDrawerLayout.closeDrawer(mDrawerList);
} else {
// error in creating fragment
Log.e("MainActivity", "Error in creating fragment");
}
}
@Override
public void setTitle(CharSequence title) {
mTitle = title;
getActionBar().setTitle(mTitle);
}
/**
* When using the ActionBarDrawerToggle, you must call it during
* onPostCreate() and onConfigurationChanged()...
*/
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
// Sync the toggle state after onRestoreInstanceState has occurred.
mDrawerToggle.syncState();
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
// Pass any configuration change to the drawer toggls
mDrawerToggle.onConfigurationChanged(newConfig);
}
}
public class HomeFragment extends Fragment
{
ArrayList<String> CompanyResults = new ArrayList<String>();
ArrayList<String> ModelsResults = new ArrayList<String>();
ArrayList<String> PricesResults = new ArrayList<String>();
ArrayList<String> urlForImgResults = new ArrayList<String>();
ArrayList<String> storeResults = new ArrayList<String>();
String[] types = {"Instruments"};
int[] imgIds = {R.drawable.instruments_small_square_2};
ArrayList<HomeFragGridItem> items = new ArrayList<HomeFragGridItem>();
ArrayList<GridItem> gItems = new ArrayList<GridItem>();
Context context;
GridView homeGv;
CustomAdapter gvAdapter;
HomeFragmentGridViewAdapter hgvAdapter;
ProgressBar pb;
boolean doubleBackToExitPressedOnce = false;
FragmentsComunicator fComunicator;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
{
View rootView = inflater.inflate(R.layout.fragment_home, container, false);
context = getActivity();
Parse.initialize(context, "123456789", "123456789");
homeGv = (GridView)rootView.findViewById(R.id.homeFragGridView);
//pd = ProgressDialog.show(getActivity(), null, "loading...");
pb= (ProgressBar)rootView.findViewById(R.id.progressBar1);
pb.setVisibility(View.VISIBLE);
Log.i("WhicFragment?", "HOME FRAGMENT");
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.small_instruments);
GridViewCustomAdapter gvAdapter = new GridViewCustomAdapter(context, R.layout.grid_view_item, gItems);
gItems.add(new GridItem("Instruments", "289 items",bitmap));
bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.small_smartphones);
gItems.add(new GridItem("SmartPhones", "coming soon..",bitmap));
bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.small_cameras);
gItems.add(new GridItem("Cameras","coming soon..",bitmap));
bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.small_fridges);
gItems.add(new GridItem("Fridges", "coming soon..",bitmap));
bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.small_laptops);
gItems.add(new GridItem("Laptops", "coming soon..",bitmap));
homeGv.setAdapter(gvAdapter);
gvAdapter.notifyDataSetChanged();
pb.setVisibility(View.GONE);
homeGv.setOnItemClickListener(new OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id)
{
if(position == 0)
{
//frame_container2
// Intent intent = new Intent(getActivity(),InstrumentsActivity.class);
// startActivity(intent);
final FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.add(R.id.frame_container, new InstrumentsFragment(), "InstrumentsFragment");
//ft.addToBackStack(null);
ft.commit();
}
}
});
return rootView;
}
}
public class InstrumentsFragment extends Fragment
{
CustomAdapter gvAdapter;
HomeFragmentGridViewAdapter hgvAdapter;
ProgressBar pb;
GridView homeGv;
ArrayList<HomeFragGridItem> items = new ArrayList<HomeFragGridItem>();
ArrayList<String> CompanyResults = new ArrayList<String>();
ArrayList<String> ModelsResults = new ArrayList<String>();
ArrayList<String> PricesResults = new ArrayList<String>();
ArrayList<String> urlForImgResults = new ArrayList<String>();
ArrayList<String> storeResults = new ArrayList<String>();
ArrayList<String> resultIds = new ArrayList<String>();
Context context;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
{
View rootView = inflater.inflate(R.layout.instrumnets_frag_layout, container,false);
context = getActivity();
Parse.initialize(context, "123456789", "123456789");
homeGv = (GridView)rootView.findViewById(R.id.instrumentsFragGV);
//pd = ProgressDialog.show(getActivity(), null, "loading...");
pb= (ProgressBar)rootView.findViewById(R.id.instrumentsPb);
pb.setVisibility(View.VISIBLE);
Log.i("WhicFragment?", "INSTRUMENTS FRAGMENT");
container.removeAllViews();
hgvAdapter = new HomeFragmentGridViewAdapter(getActivity(),R.layout.home_frag_gview_item_layout,items);
homeGv.setAdapter(hgvAdapter);
ParseQuery<ParseObject> pq = new ParseQuery<ParseObject>("ClassicGuitars");
pq.whereExists("Type");
pq.setLimit(1000);
List<ParseObject> pObjs = null;
try
{
pObjs = pq.find();
}
catch (ParseException e)
{
e.printStackTrace();
} catch (com.parse.ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(pObjs != null)
{
Log.i("parse_results", "pares object list in grid view is NOT null");
for (ParseObject parseObject : pObjs)
{
CompanyResults.add(parseObject.getString("InstrumentCompany"));
ModelsResults.add(parseObject.getString("InstrumentModel"));
PricesResults.add(parseObject.getString("LastUpdatedPrice"));
urlForImgResults.add(parseObject.getString("UrlForImg"));
storeResults.add(parseObject.getString("InstrumentUrl"));
resultIds.add(parseObject.getObjectId());
}
}
BgWork b1 = new BgWork();
b1.execute();
hgvAdapter.notifyDataSetChanged();
pb.setVisibility(View.GONE);
homeGv.setOnItemClickListener(new OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id)
{
Intent offersInent = new Intent (getActivity(), Offers.class);
offersInent.putExtra("actvSelection",
CompanyResults.get(position).toString()+" "+ModelsResults.get(position).toString());
offersInent.putStringArrayListExtra("companysArray", CompanyResults);
offersInent.putStringArrayListExtra("modelsArray", ModelsResults);
offersInent.putStringArrayListExtra("pricesArray", PricesResults);
offersInent.putStringArrayListExtra("companysUrls", storeResults);
offersInent.putStringArrayListExtra("imgUrls", urlForImgResults);
offersInent.putStringArrayListExtra("ids", resultIds);
startActivity(offersInent);
}
});
return rootView;
}
@Override
public void onResume()
{
super.onResume();
getView().setFocusableInTouchMode(true);
getView().requestFocus();
getView().setOnKeyListener(new View.OnKeyListener()
{
@Override
public boolean onKey(View v, int keyCode, KeyEvent event)
{
if (event.getAction() == KeyEvent.ACTION_UP && keyCode == KeyEvent.KEYCODE_BACK)
{
Intent intent = new Intent(getActivity(),MainOptionsActivity.class);
startActivity(intent);
getActivity().finish();
return true;
}
return false;
}
});
}
private class BgWork extends AsyncTask<Void, Void, Void>
{
@Override
protected Void doInBackground(Void... params)
{
for (int i = 0 ; i < CompanyResults.size() ; i ++)
{
HomeFragGridItem hgItem = new HomeFragGridItem(urlForImgResults.get(i).toString(),
CompanyResults.get(i).toString(),
ModelsResults.get(i).toString(),
PricesResults.get(i).toString());
items.add(hgItem);
}
return null;
}
}
}
public class HomeFragmentGridViewAdapter extends ArrayAdapter<HomeFragGridItem>
{
ArrayList<String> companys = new ArrayList<String>();
ArrayList<String> models = new ArrayList<String>();
ArrayList<String> prices = new ArrayList<String>();
ArrayList<String> stores = new ArrayList<String>();
ArrayList<String> urls = new ArrayList<String>();
private int layoutResourceId;
private ArrayList<HomeFragGridItem> mGridData = new ArrayList<HomeFragGridItem>();
Context context;
String url =""
private static LayoutInflater inflater=null;
public HomeFragmentGridViewAdapter(Context context,int layoutResourceId, ArrayList<HomeFragGridItem> mGridData)
{
super(context, layoutResourceId, mGridData);
this.context = context;
this.layoutResourceId = layoutResourceId;
this.mGridData = mGridData;
}
public void setGridData(ArrayList<HomeFragGridItem> mGridData)
{
this.mGridData = mGridData;
notifyDataSetChanged();
}
@Override
public View getView(final int position, View convertView, ViewGroup parent)
{
View row = convertView;
ViewHolder holder;
if(row == null)
{
LayoutInflater inflater = ((Activity) context).getLayoutInflater();
row = inflater.inflate(layoutResourceId, parent, false);
holder = new ViewHolder();
holder.guitarCompanyTv=(TextView) row.findViewById(R.id.gridViewItemCompanyTv);
holder.guitarModelTv=(TextView) row.findViewById(R.id.gridViewItemModelTv);
holder.guitarImg=(ImageView) row.findViewById(R.id.gridViewItemIv);
holder.guitarPriceTv=(TextView) row.findViewById(R.id.gridViewItemPriceTv);
row.setTag(holder);
}
else
{
holder = (ViewHolder) row.getTag();
}
HomeFragGridItem item = mGridData.get(position);
holder.guitarCompanyTv.setText(item.getCompany());
holder.guitarModelTv.setText(item.getMoedl());
holder.guitarPriceTv.setText(item.getPrice());
//Log.i("parse_results", "*** 2 **"+(urls.get(position)));
Picasso.with(context).load(item.getImage()).resize(140, 190).centerCrop().into(holder.guitarImg);
return row;
}
public class ViewHolder
{
TextView guitarCompanyTv;
TextView guitarModelTv;
TextView guitarPriceTv;
ImageView guitarImg;
}
}