簡體   English   中英

嘗試不重復自己(android / java)

[英]trying not to repeat myself (android/java)

這是怎么回事? 我是開發的初學者,在任何地方我讀到“不要重復自己”,所以我真的很想重復自己。 我在應用程序的每個活動中復制並粘貼了一段代碼,我懷疑可能有一種不重復的代碼-可能創建一個類並調用其方法-但我不知道如何實現它。 下面的代碼就是我在說的:我在導航抽屜中使用的東西,它在我的應用程序的每個活動的主類中:

@Override
        public void onItemClick(AdapterView<?> parent, View arg1, int position,
                long arg3) {

            if (position == 0) {
                Toast.makeText(this, "categories baby", Toast.LENGTH_SHORT).show();
            } else if (position == 1){

                final Context context = this;

                Intent getUserData = getIntent();
                String userEmail = getUserData.getStringExtra("user_email");

                Intent intent = new Intent(context, NewAdActivity.class);
                intent.putExtra("userEmail", userEmail);
                startActivity(intent);


            } else if (position == 2){

                final Context context = this;

                Intent getUserData = getIntent();
                String userEmail = getUserData.getStringExtra("user_email");

                Intent intent = new Intent(context, AdListActivity.class);
                intent.putExtra("userEmail", userEmail);
                startActivity(intent);

            } else {
                Session session = Session.getActiveSession();
                session.closeAndClearTokenInformation();

                Intent intent = new Intent(context, MainActivity.class);
                startActivity(intent);
            }
        }

您能給我一些關於如何重用它而不是復制/粘貼的提示嗎? 謝謝!

您可以創建一個擴展Activity並實現您的代碼的新類,然后使所有活動都對該類進行擴展。

該代碼似乎是AdapterView.OnItemClickListener的實現,因此您可以創建類似以下內容的代碼:

public abstract class MyActivityWithListener extends Activity 
        implements AdapterView.OnItemClickListener {
    @Override
    public void onItemClick(AdapterView<?> parent, View arg1, int position, long arg3) {
        ....
    }

}

然后您的主要活動可能是這樣的:

public class MainActivity extends MyActivityWithListener {
    ...
}

如您在以下塊中清楚看到的

        } else if (position == 1){

            final Context context = this;

            Intent getUserData = getIntent();
            String userEmail = getUserData.getStringExtra("user_email");

            Intent intent = new Intent(context, NewAdActivity.class);
            intent.putExtra("userEmail", userEmail);
            startActivity(intent);


        } else if (position == 2){

            final Context context = this;

            Intent getUserData = getIntent();
            String userEmail = getUserData.getStringExtra("user_email");

            Intent intent = new Intent(context, AdListActivity.class);
            intent.putExtra("userEmail", userEmail);
            startActivity(intent);

        }

除了活動的類,您執行了兩次相同的操作。 因此,您可以將其分解為如下功能:

        } else if (position == 1){
            beginAdActivity(NewAdActivity.class);
        } else if (position == 2){
            beginAdActivity(AdListActivity.class);
        }
 }

 public void beginAdActivity(Class<?> activityClass)
 {
      final Context context = this;

      Intent getUserData = getIntent();
      String userEmail = getUserData.getStringExtra("user_email");

      Intent intent = new Intent(context, activityClass);
      intent.putExtra("userEmail", userEmail);
      startActivity(intent);
 }

ta-dah,它只被寫下一次。

像這樣創建一個util類

public class MyUtils{

    public static void jumpToNewAd(Activity mContext){
        Intent getUserData = mContext.getIntent();
        String userEmail = getUserData.getStringExtra("user_email");

        Intent intent = new Intent(mContext, NewAdActivity.class);
        intent.putExtra("userEmail", userEmail);
        mContext.startActivity(intent);
    }
    public static void jumpToAdList(Activity mContext){
        Intent getUserData = mContext.getIntent();
        String userEmail = getUserData.getStringExtra("user_email");

        Intent intent = new Intent(mContext, AdListActivity.class);
        intent.putExtra("userEmail", userEmail);
        mContext.startActivity(intent);
    }
    public static void jumpToMain(Activity mContext){
        Session session = Session.getActiveSession();
        session.closeAndClearTokenInformation();

        Intent intent = new Intent(mContext, MainActivity.class);
        mContext.startActivity(intent);
    }

    public static void ting(Activity mContext,String message){
        Toast.makeText(mContext, message, Toast.LENGTH_SHORT).show();
    }

}

隨時隨地呼叫

MyUtils.jumpToAdList(this);
        MyUtils.jumpToNewAd(this);
        MyUtils.jumpToMain(this);
        MyUtils.ting(this,"Catagories Baby");

暫無
暫無

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

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