簡體   English   中英

在Activity之外實例化ImageButton

[英]Instantiating ImageButtons outside of Activity

嗨,我使用了顯示在每個活動底部的幾個“圖像”按鈕,我想知道是否有任何方法可以在其各自活動Oncreate之外實例化對象,因為它們在每個活動中都做相同的事情,但我不想重復代碼。

任何建議將不勝感激謝謝。

目前,我在嘗試調用build()函數時收到空指針異常。

這是我的菜單,選項卡將顯示在底部

    package koodoo.hcp.plus;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageButton;

import koodoo.hcp.utilities.Tabbuilder;

public class Hcp_Menu extends Activity implements OnClickListener {

/**
 * Stores all the buttons within the HCP_Menu Activity
 */
ImageButton groupBtn;
ImageButton readingBtn;
ImageButton activityBtn;
ImageButton calendarBtn;
ImageButton ongoingBtn;

Context context = this;

View view = new View(this);

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_hcp__menu);

    Tabbuilder tb = new Tabbuilder();
    tb.build(view, context);

    /**
     * Create Activity Buttons
     */
    //group button
    groupBtn = (ImageButton) findViewById(R.id.imageButtonGroup);
    groupBtn.setOnClickListener(this);

    //reading button
    readingBtn = (ImageButton) findViewById(R.id.imageButtonReading);
    readingBtn.setOnClickListener(this);

    //activity button
    activityBtn = (ImageButton) findViewById(R.id.imageButtonActivity);
    activityBtn.setOnClickListener(this);

    //calendar button
    calendarBtn = (ImageButton) findViewById(R.id.imageButtonCalender);
    calendarBtn.setOnClickListener(this);

    //ongoing button
    ongoingBtn = (ImageButton) findViewById(R.id.imageButtonOngoing);
    ongoingBtn.setOnClickListener(this);


    /**
     * create Tab buttons
     *//*

    //dash tab
    dashTab = (ImageButton) findViewById(R.id.dashButton);
    dashTab.setOnClickListener(this);

    //stats tab
    statsTab = (ImageButton) findViewById(R.id.statsButton);
    statsTab.setOnClickListener(this);

    //invite tab
    inviteTab = (ImageButton) findViewById(R.id.inviteButton);
    inviteTab.setOnClickListener(this);

    //settings tab
    settingsTab = (ImageButton) findViewById(R.id.settingsButton);
    settingsTab.setOnClickListener(this);

    //log tab
    logTab = (ImageButton) findViewById(R.id.logButton);
    logTab.setOnClickListener(this);*/




}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.hcp__menu, menu);
    return true;
}

/**
 * onclick function for each button on the Activity.
 * @param v
 */
@Override
public void onClick(View v) {

    Intent i;

    switch (v.getId()){
        case R.id.imageButtonGroup:  i = new Intent(this, Group.class);
            startActivity(i);
            break;
        case R.id.imageButtonActivity:  i = new Intent(this, Activities.class);
            startActivity(i);
            break;
        case R.id.imageButtonCalender:  i = new Intent(this, Calender.class);
            startActivity(i);
            break;
        case R.id.imageButtonOngoing: i = new Intent(this, Ongoing.class);
            startActivity(i);
            break;
        case R.id.imageButtonReading: i = new Intent(this, Reading.class);
            startActivity(i);
            break;

            default:
                break;

    }

}
}

Tabbuilder類

package koodoo.hcp.utilities;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.view.View.OnClickListener;
import android.view.View;
import android.widget.ImageButton;

import koodoo.hcp.plus.Hcp_Menu;
import koodoo.hcp.plus.Invite;
import koodoo.hcp.plus.Log;
import koodoo.hcp.plus.R;
import koodoo.hcp.plus.Settings;
import koodoo.hcp.plus.Stats;

/**
 * Created by Marc Davies on 18/09/2013.
 */
public class Tabbuilder {

    ImageButton dashTab;
    ImageButton statsTab;
    ImageButton inviteTab;
    ImageButton settingsTab;
    ImageButton logTab;

    public void build(View v, final Context context) {

        /**
         * create Tab buttons
         */

        //dash tab
        dashTab = (ImageButton) v.findViewById(R.id.dashButton);
        dashTab.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent i = new Intent(context, Hcp_Menu.class);

            }
        });

        //stats tab
        statsTab = (ImageButton) v.findViewById(R.id.statsButton);
        statsTab.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent i = new Intent(context, Stats.class);

            }
        });

        //invite tab
        inviteTab = (ImageButton) v.findViewById(R.id.inviteButton);
        inviteTab.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent i = new Intent(context, Invite.class);

            }
        });

        //settings tab
        settingsTab = (ImageButton) v.findViewById(R.id.settingsButton);
        settingsTab.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent i = new Intent(context, Settings.class);

            }
        });

        //log tab
        logTab = (ImageButton) v.findViewById(R.id.logButton);
        logTab.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent i = new Intent(context, Log.class);

            }
        });

    }

}

創建一個基本活動並在其中實例化按鈕。 現在,讓其他活動繼承基本活動。 但是不要忘記正確處理布局

您可以使用靜態啟動方法創建utils類。

這些將獲取上下文和圖像並返回一個imageButton。 您仍然可以在相應Activity的onCreate中調用它,但是不必再復制粘貼代碼了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM