簡體   English   中英

從Java文件導入類/方法

[英]import class/method from java file

我目前正在學習android和java,並且在導入java文件時遇到一些問題。

我正在使用android api演示中的時間和日期示例,我想將與創建時間和日期對話框(將值等設置)相關的所有代碼放到單獨的Java文件中,並且當應用程序啟動后,只需聲明按鈕和onclick事件即可。

做這個的最好方式是什么? 我是否需要將所有代碼放入一個類(擴展活動)或方法中? 如何在我的主班級中使用它?

該示例的代碼是:

package com.datetest;
import android.app.Activity;
import android.os.Bundle;
import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.TimePickerDialog;
import android.app.Dialog;
import android.os.Bundle;
import android.widget.TextView;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.TimePicker;
import android.view.View;
import java.util.Calendar;



public class datetest extends Activity {
   // where we display the selected date and time
private TextView mDateDisplay;

// date and time
private int mYear;
private int mMonth;
private int mDay;
private int mHour;
private int mMinute;

static final int TIME_DIALOG_ID = 0;
static final int DATE_DIALOG_ID = 1;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.main);

    mDateDisplay = (TextView) findViewById(R.id.dateDisplay);

    Button pickDate = (Button) findViewById(R.id.pickDate);
    pickDate.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            showDialog(DATE_DIALOG_ID);
        }
    });

    Button pickTime = (Button) findViewById(R.id.pickTime);
    pickTime.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            showDialog(TIME_DIALOG_ID);
        }
    });

    final Calendar c = Calendar.getInstance();
    mYear = c.get(Calendar.YEAR);
    mMonth = c.get(Calendar.MONTH);
    mDay = c.get(Calendar.DAY_OF_MONTH);
    mHour = c.get(Calendar.HOUR_OF_DAY);
    mMinute = c.get(Calendar.MINUTE);

    updateDisplay();
}

@Override
protected Dialog onCreateDialog(int id) {
    switch (id) {
        case TIME_DIALOG_ID:
            return new TimePickerDialog(this,
                    mTimeSetListener, mHour, mMinute, false);
        case DATE_DIALOG_ID:
            return new DatePickerDialog(this,
                        mDateSetListener,
                        mYear, mMonth, mDay);
    }
    return null;
}

@Override
protected void onPrepareDialog(int id, Dialog dialog) {
    switch (id) {
        case TIME_DIALOG_ID:
            ((TimePickerDialog) dialog).updateTime(mHour, mMinute);
            break;
        case DATE_DIALOG_ID:
            ((DatePickerDialog) dialog).updateDate(mYear, mMonth, mDay);
            break;
    }
}    

private void updateDisplay() {
    mDateDisplay.setText(
        new StringBuilder()
                // Month is 0 based so add 1
                .append(mMonth + 1).append("-")
                .append(mDay).append("-")
                .append(mYear).append(" ")
                .append(pad(mHour)).append(":")
                .append(pad(mMinute)));
}

private DatePickerDialog.OnDateSetListener mDateSetListener =
        new DatePickerDialog.OnDateSetListener() {

            public void onDateSet(DatePicker view, int year, int monthOfYear,
                    int dayOfMonth) {
                mYear = year;
                mMonth = monthOfYear;
                mDay = dayOfMonth;
                updateDisplay();
            }
        };

private TimePickerDialog.OnTimeSetListener mTimeSetListener =
        new TimePickerDialog.OnTimeSetListener() {

            public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
                mHour = hourOfDay;
                mMinute = minute;
                updateDisplay();
            }
        };

private static String pad(int c) {
    if (c >= 10)
        return String.valueOf(c);
    else
        return "0" + String.valueOf(c);
}

}

謝謝你的幫助

為什么需要將其分開?

恕我直言,如果您要描述的分離方式,則需要另一種方法。 代碼中的方法和類與交叉引用緊密結合使用,例如-嘗試分離會很混亂-那么為什么要麻煩呢?

就我個人而言,我將以不同的方式來解決此代碼中解決的問題-就像您所描述的那樣以幾個類結尾-但它是從下而上構建的,而不僅僅是從設計為緊密耦合的現有代碼構建。

暫無
暫無

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

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