2013-08-07 28 views
0

我有两个类,如下所示,如何访问android中的方法?

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()访问,但它不起作用。请帮我解决这个问题。

谢谢。

+1

化妆'DateFormat'类的内部类你的活动类 – Raghunandan

+0

我想从应用程序的各个部分访问DateFormat类,因此我分别创建了它。 –

+0

你在'getDateFormat()'中有什么代码? –

回答

0

简单,

申报getDateFormat()在Settings.java为静态:

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

现在,在您DateFormat.java调用使用它的类名的功能。

即使用:

Settings.getDateFormat() 
在DateFormat类

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

+0

我尝试了你建议的方式,但仍然无法访问第二个类的getDateFormat() –

+0

你遇到了任何错误? – Zax

+0

令牌上的语法错误“getDateFormat”,此标记后的标识符 - 这是我得到的错误消息 –

0

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

+0

我可以有一个示例代码请 –

+0

这将是一个关系。设置(活动)有一个DataFormat。 '私人DataFormat dataFormat;' – Canberk

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(); 

} 

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

+0

你能告诉如何从DateFormat类使用这个对象来访问方法吗? @Curtis Nehls –

0

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

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 
    } 

}