使用要显示最后一个活动的活动组在选项卡之间切换 - Tab ActivityGroup [英] Switching between tab using activity group it want to display last activity - Tab ActivityGroup

查看:13
本文介绍了使用要显示最后一个活动的活动组在选项卡之间切换 - Tab ActivityGroup的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经为我的 android 应用程序编写了标签.

I have written tab for my android application.

我的问题是使用要显示最后一个活动的活动组在选项卡之间切换.当我们导航标签时,我想显示最后打开/访问的屏幕.我的是转到第一个屏幕:

My question is switching between tab using activity group it want to display last activity. I want to show last open/visited screen when we navigate the tab.My one is go to first screen:

通过 Tab 导航时我需要显示上次打开的屏幕

I need to show last opened screen when navigate through Tab

选项卡 1 -> 销售.这里面包含 10 个屏幕(活动)Tab 2 -> Admin .这包含 5 个屏幕(活动)选项卡 3 -> 设置.其中包含 8 个屏幕.(活动)

Tab 1 -> Sales. This contain 10 screen inside (actiivity) Tab 2 -> Admin .This contain 5 screen inside (actiivity) Tab 3 -> Setting.This contain 8 screen inside. (actiivity)

我点击选项卡 1,它加载选项卡 1 的屏幕,其中包含销售路线列表.然后我单击一个销售路线,它转到第一个选项卡中的零售商列表.然后我在选项卡 3 中设置了设置"完成一些工作回到销售,那个时候它应该在销售"标签中显示最后打开的屏幕.

当我点击标签时,它应该显示上次打开的活动怎么办?

我确实喜欢这个.请说明我想在哪里更改代码以满足我的要求.

I did like this.Please indicate where I want to change the code for my requirements.

MainActivity.登录后调用

MainActivity.It will call after login

  public class MainActivity extends TabActivity {
int selectedTab;
TabHost tabHost ;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.tabview);

    TabHost t = getTabHost();
    tabHost = (TabHost)findViewById(android.R.id.tabhost);

    TabSpec firstTabSpec = tabHost.newTabSpec("tid1");
    TabSpec secondTabSpec = tabHost.newTabSpec("tid1");
    TabSpec thirdTabSpec = tabHost.newTabSpec("tid1");
    /** TabSpec setIndicator() is used to set name for the tab. */
    /** TabSpec setContent() is used to set content for a particular tab. */
    firstTabSpec.setIndicator("Sales").setContent(new Intent(this,SalesActivityGroup.class));
    secondTabSpec.setIndicator("Admin").setContent(new Intent(this,SettingActivityGroup.class));
    thirdTabSpec.setIndicator("Setting").setContent(new Intent(this,SettingActivityGroup.class));


    tabHost.addTab(firstTabSpec);
    tabHost.addTab(secondTabSpec);
    tabHost.addTab(thirdTabSpec);
    tabHost.setCurrentTab(0);
    tabHost.setMinimumHeight(25);
}

public void onTabChanged(String arg0) {
        selectedTab = tabHost.getCurrentTab();

}

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        moveTaskToBack(false);
        return true;
    }
    return super.onKeyDown(keyCode, event);
}

}

第一个 Tab1(Sales) 的 SalesGroupActivity

First Tab1(Sales)'s SalesGroupActivity

 public class SalesActivityGroup extends ActivityGroup {

public static SalesActivityGroup group;
private ArrayList<View> history;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    this.history = new ArrayList<View>();
    group = this;

    View view = getLocalActivityManager().startActivity("Sales",
            new Intent(this, SalesRouteActivity.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP))
            .getDecorView();

    replaceView(view);

}

public void replaceView(View v) {
    history.add(v);
    setContentView(v);

}

public void back() {
    if (history.size() > 0) {
        history.remove(history.size() - 1);
        if (history.size() > 0) {
            setContentView(history.get(history.size() - 1));
        } else {
            finish();
        }
    } else {
        finish();
    }
}

@Override
public void onBackPressed() {
    SalesActivityGroup.group.back();
    return;
}

已编辑这是 FirstTab 的第一个活动 - SalesRouteActivity

Edited This is FirstTab's firstActivity - SalesRouteActivity

    public class SalesRouteActivity extends ListActivity{
     TableLayout tl;
     static int positions = 0;
     static String keyword ="";
     int uploadSize = 0;
     private NotificationManager mNotificationManager;
     private int SIMPLE_NOTFICATION_ID;
     String strBusinessUnit = "";   
     String strExecutive = "";
     String strTerritoryCode = "";
     SimpleAdapter sd;
     View row = null;
     View selectRow = null;

     @Override
     public void onCreate(Bundle savedInstanceState) {

         super.onCreate(savedInstanceState);
         setContentView(R.layout.sales_routes);

         SharedPreferences myPrefs = this.getSharedPreferences("myLogedPrefs",MODE_WORLD_READABLE);
         strBusinessUnit = myPrefs.getString("BusinessUnit", "");
         strExecutive = myPrefs.getString("Executive", "");
         strTerritoryCode = myPrefs.getString("TerritoryCode", "");

         ArrayList<SalesRoutes> routeList = getSalesRoute();

         ArrayList<HashMap<String, String>> routhPath = new ArrayList<HashMap<String, String>>();
         for (int i = 0; i < routeList.size(); i++) {
            if(Integer.parseInt(routeList.get(i).getOutlets()) >0){
                HashMap<String, String> map = new HashMap<String, String>();
                map.put("routeCode",((SalesRoutes) routeList.get(i)).getRouteCode());
                map.put("routeName",((SalesRoutes) routeList.get(i)).getDescription());
                map.put("outlets", ((SalesRoutes) routeList.get(i)).getOutlets());
                routhPath.add(map);
             }
         }

         ListView list = getListView();
         sd = new SimpleAdapter(this, routhPath, R.layout.route_path,new String[] {"routeCode","routeName","outlets" },new int[] { R.id.routeCode,R.id.routeName,R.id.outlets});
         row = getLayoutInflater().inflate(R.layout.route_path_row, null, false);
         getListView().addHeaderView(row);
         list.setAdapter(sd);
         list.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
        list.setSelected(true);
        list.setTextFilterEnabled(true);
        list.setItemsCanFocus(true);
        list.setItemChecked(positions, true);
        list.setSelectionAfterHeaderView();

        if (routeList.size() > 0) {
            keyword = routeList.get(0).getRouteCode();
        }

        uploadSize = new UploadActivity().getUploadTable();

        if (uploadSize > 0) {
            mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
            final Notification notifyDetails = new Notification(R.drawable.icon, "New Alert, Click Me!",System.currentTimeMillis());
            Context context = getApplicationContext();
            CharSequence contentTitle = "Upload Available...";
            CharSequence contentText = "Browse Android Official Site by clicking me";
            Intent notifyIntent = new Intent(android.content.Intent.ACTION_VIEW,Uri.parse("http://www.android.com"));
            PendingIntent intent = PendingIntent.getActivity(SalesRouteActivity.this, 0, notifyIntent,android.content.Intent.FLAG_ACTIVITY_NEW_TASK);
            notifyDetails.setLatestEventInfo(context, contentTitle,contentText, intent);
            mNotificationManager.notify(SIMPLE_NOTFICATION_ID, notifyDetails);
        }
    }

    @SuppressWarnings("unchecked")
    @Override
    protected void onListItemClick(ListView l, View v, int position, long id) {
        super.onListItemClick(l, v, position, id);
        HashMap<String, String> hashMap = (HashMap<String, String>) l.getItemAtPosition(position);
        keyword = hashMap.get("routeCode");

        positions = position;
        if(position == 0 ){


        }else if(position != 1){
            Intent showContent = new Intent(v.getContext(),SalesRouteDevitionActivity.class);
            Bundle bundle = new Bundle();
            bundle.putString("RouteCode", keyword);
            showContent.putExtras(bundle);
            getParent().startActivityForResult(showContent, 5);
        }else{
            Intent intent = new Intent(SalesRouteActivity.this, ListRetailerActivity.class);
            Bundle bundle = new Bundle();
            bundle.putString("RouteName", keyword);
            intent.putExtras(bundle);
            View view = SalesActivityGroup.group.getLocalActivityManager().startActivity("", intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)).getDecorView();  
            SalesActivityGroup.group.replaceView(view);

        }
    }

    @Override  
    public void onBackPressed() {  
        SalesActivityGroup.group.back();  
    } 

    @SuppressWarnings({ "rawtypes", "unchecked" })
    public ArrayList<SalesRoutes> getSalesRoute(){
         DBAdapter dbAdapter = DBAdapter.getDBAdapterInstance(this);
          try {
              dbAdapter.createDataBase();
         } catch (IOException e) {
              Log.i("*** select ",e.getMessage());
         }
         dbAdapter.openDataBase();       
         String sql = "SELECT RouteCode, Description, OutletsAttached  " +
                       "FROM WMRoute  " +
                       "WHERE ActiveStatus = '1' AND  RouteDefaultExecutive = ? AND  BusinessUnit = ? AND TerritoryCode = ?  " +
                       "ORDER BY RouteCode  ";

         String[]d = new String[]{strExecutive,strBusinessUnit,strTerritoryCode};
         ArrayList stringList = dbAdapter.selectRecordsFromDBList(sql, d);
         dbAdapter.close();
         ArrayList<SalesRoutes> salesRoutesList = new ArrayList<SalesRoutes>();
         for (int i = 0; i < stringList.size(); i++) {
            ArrayList<Object> arrayList = (ArrayList<Object>) stringList.get(i);
            ArrayList<Object> list = arrayList;
            SalesRoutes salesRoutes = new SalesRoutes();
            try {
                salesRoutes.setRouteCode((String) list.get(0));
                salesRoutes.setDescription((String) list.get(1));
                salesRoutes.setOutlets((String)list.get(2));

            } catch (Exception e) {
                Log.i("***" + SalesRouteActivity.class.toString(), e.getMessage());
            }
            salesRoutesList.add(salesRoutes);
        }
        return salesRoutesList;
    }
}

当您在选项卡之间切换时,可能会一次又一次地创建我的 ActivityGroups因此,组只想创建一次并在我在选项卡之间切换时恢复

从数据库中获取的每个屏幕细节/内容..

Every screen details/contents getting from database..

我面临这个问题超过 2 天....请帮助我.请帮我解决这个问题......

I am facing this issue more than 2 days....Please help me. Please help me on this....

提前谢谢.....

推荐答案

谢谢大家;

我的 MainActivity 出现问题.

There were issue in my MainActivity.

 tabHost = getTabHost();
    TabHost.TabSpec spec;
    Intent intent;


    intent = new Intent().setClass(this, SalesActivityGroup.class);  
    spec = getTabHost().newTabSpec("Sales").setIndicator("Sales",getResources().getDrawable(R.drawable.ic_tab_artists_grey)).setContent(intent);
    tabHost.addTab(spec);

    intent = new Intent().setClass(this, SettingActivityGroup.class);  
    spec = getTabHost().newTabSpec("Admin").setIndicator("Admin",getResources().getDrawable(R.drawable.admin)).setContent(intent);
    tabHost.addTab(spec);

    intent = new Intent().setClass(this, SettingActivityGroup.class);  
    spec = getTabHost().newTabSpec("Setting").setIndicator("Setting",getResources().getDrawable(R.drawable.ic_tab_artists_grey)).setContent(intent);
    tabHost.addTab(spec);

    intent = new Intent().setClass(this, SettingActivityGroup.class);  
    spec = getTabHost().newTabSpec("Inquiry").setIndicator("Inquiry",getResources().getDrawable(R.drawable.ic_tab_artists_grey)).setContent(intent);
    tabHost.addTab(spec);


    tabHost.setCurrentTab(0);
    tabHost.setMinimumHeight(18);
    tabHost.setFadingEdgeLength(5);
    tabHost.setFocusable(true); 
    tabHost.requestFocus();
    tabHost.setFadingEdgeLength(5);
  }
}

我同意@Vaibhav Jani @Dharmendra @Suri,我在所有活动中都错过了 onKeyPressed().

And I agree @Vaibhav Jani @Dharmendra @Suri, I missed that onKeyPressed() in all Activity.

这篇关于使用要显示最后一个活动的活动组在选项卡之间切换 - Tab ActivityGroup的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆