将标签布局(使用片段)添加到已制作的应用程序(推送通知)

时间:2013-12-28 19:47:11

标签: android android-fragments

我是Android的初学者。我制作了一个Android应用程序,通过GCM服务处理推送通知,现在我需要为应用程序添加更多功能,所以我认为选项卡将是完美的选择。就像我说我有推送通知应用程序工作,还有另一个应用程序,具有可滑动视图工作的标签布局,但现在我需要合并它们,这就是我迷失的地方。

我该怎么办?我尝试将Tabs应用程序的主要活动代码添加到另一个应用程序中,并添加碎片但不起作用。

也许我只需要将Push应用程序的代码粘贴到其中一个新片段(?)

这就是我所做的(这是应用程序的一部分):

public class MainActivity extends FragmentActivity implements ActionBar.TabListener {

private ViewPager viewPager;
private TabsPager_Adapter mAdapter;
private ActionBar actionBar;
// Tab titles
private String[] tabs = { "Login Screen", "Estado de Sensores", "Botones" };

public static final long EXPIRATION_TIME_MS = 1000 * 3600 * 24 * 7;
String SENDER_ID = "171235143158";
private static final int PLAY_SERVICES_RESOLUTION_REQUEST = 9000;

    private Context context;
    private String regid;
    private GoogleCloudMessaging gcm;

    private EditText txtUser;
    private Button btnRegistrar;

    static final String TAG = "GCMDemo";

private static final String PROPERTY_REG_ID = "registration_id";
private static final String PROPERTY_APP_VERSION = "appVersion";
private static final String PROPERTY_EXPIRATION_TIME = "onServerExpirationTimeMs";
private static final String PROPERTY_USER = "user";

@Override
protected void onCreate(Bundle savedInstanceState) {

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

    // Initilization
    viewPager = (ViewPager) findViewById(R.id.pager);
    actionBar = getActionBar();
    mAdapter = new TabsPager_Adapter(getSupportFragmentManager());

    viewPager.setAdapter(mAdapter);
    actionBar.setHomeButtonEnabled(false);
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);       

    // Adding Tabs
    for (String tab_name : tabs)
    {
        actionBar.addTab(actionBar.newTab().setText(tab_name)
                .setTabListener(this));
    }

    /**
     * on swiping the viewpager make respective tab selected
     * */
    viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {

        @Override
        public void onPageSelected(int position) 
        {
            // on changing the page
            // make respected tab selected
            actionBar.setSelectedNavigationItem(position);
        }
        @Override
        public void onPageScrolled(int arg0, float arg1, int arg2) 
        {
        }

        @Override
        public void onPageScrollStateChanged(int arg0) 
        {
        }

    });


     txtUser = (EditText)findViewById(R.id.txtUsuario);
     btnRegistrar = (Button)findViewById(R.id.btnGuardar);

    btnRegistrar.setOnClickListener(new View.OnClickListener() {


        public void onClick(View v)
        {
            context = getApplicationContext();

            //Chequeamos si está instalado Google Play Services
            if(checkPlayServices())
            {
                    gcm = GoogleCloudMessaging.getInstance(MainActivity.this);

                    //Obtenemos el Registration ID guardado
                    regid = getRegistrationId(context);

                    //Si no disponemos de Registration ID comenzamos el registro
                    if (regid.equals("")) {
                        TareaRegistroGCM tarea = new TareaRegistroGCM();
                        tarea.execute(txtUser.getText().toString());
                    }
            }
            else
            {
                    Log.i(TAG, "No se ha encontrado Google Play Services.");
            }
        }


    });


}

1 个答案:

答案 0 :(得分:0)

Android应该首先理解的是Intent原则。 使用意图和BroadcastReceivers,您甚至可以发送自己的意图来唤醒“应用程序”。

例如,您可以将操作字符串设置为GCM_RECEIVED,并根据需要添加额外值来处理它。

从这里开始查看广播概念的简单示例, http://www.vogella.com/articles/AndroidBroadcastReceiver/article.html