0

我有两个类如下,

设置.java

public class Settings extends Activity{
   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.general_settings);

              // some code here

   }

public String getDateFormat() {

    //Some code here

   }
}

第二课,

日期格式.java

public class DateFormat {

private DateDisplayFormat(){}

public static final String DEFAULT = "dd-MM-yyyy";
public static final String MON_DEFAULT = "MM-dd-yyyy";

    // I want to access the method here
public static String getFormattedDate(Calendar calendar){
    return getFormattedDate(DEFAULT, calendar.getTime());
}

public static String getFormattedDate(Date date){
    return getFormattedDate(DEFAULT, date);
}

public static String getFormattedDate(String format, Calendar calendar){
    return getFormattedDate(format, calendar.getTime());
}

public static String getFormattedDate(String format, Date d){
    SimpleDateFormat formatter = new SimpleDateFormat(format);
    return formatter.format(d);
}

}

我的疑问是我想从第二个类访问 getDateFormat() 方法以获取结果字符串。我尝试通过 Settings.getDateFormat() 访问,但没有成功。请帮我解决这个问题。

谢谢你。

4

4 回答 4

1

这些类可以在您的主要活动中初始化,并通过那里您可以评估它。

public class Settings extends Activity{
   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.general_settings);

              // some code here
            DateFormat dateformate_class=new  DateFormat();

 }

并且通过它的对象你可以访问它的函数和方法。

于 2013-08-07T09:10:59.987 回答
0

我不得不承认我没有完全理解你想要达到的目标。我有两种可能的解决方案,取决于getDateFormat(). 第一种情况是您getDateFormat()在使用的每个类中都有不同的方法getFormattedDate()。然后你的课

public class GenericActivity extends Activity{
    @Override
    protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.generic_activity);

       // some code here

       DateFormat.getFormattedDate(this.getDateFormat(), genericCalendar);

    }

    public String getDateFormat() {

        //Code customized for this GenericActivity

    }
}

否则,如果你只需要一个实现getDateFormat(),那么你应该把它放在 DateFormat 类中,如下所示:

public class DateFormat {

    private DateFormat() {
    }

    public final String DEFAULT = "dd-MM-yyyy";
    public final String MON_DEFAULT = "MM-dd-yyyy";

    // I want to access the method here
    public String getFormattedDate(Calendar calendar) {
        return getFormattedDate(DEFAULT, calendar.getTime());
    }

    public String getFormattedDate(Date date) {
        return getFormattedDate(DEFAULT, date);
    }

    public String getCustomFormattedDate(Calendar calendar) {
        return getFormattedDate(this.getDateFormatFromDB(), calendar.getTime());
    }

    private String getFormattedDate(String format, Date d) {
        SimpleDateFormat formatter = new SimpleDateFormat(format);
        return formatter.format(d);
    }

    private String getDateFormatFromDB() {
        //DB access code here
    }

}

于 2013-08-07T10:04:39.587 回答
0

您也可以使用合成。在您的活动中添加 DateFormat 类作为变量。

于 2013-08-07T09:10:12.377 回答
0

简单的,

将 Settings.java 中的 getDateFormat() 声明为静态:

IE

public static getDateFormat()
{
   ...
   ...
}

现在在您的 DateFormat.java 中使用其类名调用函数。

即使用:

Settings.getDateFormat()

在您的 DateFormat 类中。

这就是“静态”关键字的概念。

于 2013-08-07T09:10:23.470 回答