如何在android中访问方法?

时间:2013-08-07 09:03:11

标签: android class methods android-activity

我有两个课程如下,

Settings.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

   }
}

第二节课,

DateFormat.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 个答案:

答案 0 :(得分: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();

 }

通过它的对象,你可以访问它的功能和方法。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

简单,

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

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

现在在你的DateFormat.java中使用它的类名调用函数。

即。使用方法:

Settings.getDateFormat()
在你的DateFormat类中

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

答案 3 :(得分: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
    }

}