3

静的メソッドから非静的メソッドを呼び出す際に大きな問題に直面しています。

これは私のコードです

Class SMS
{
    public static void First_function()
    {
        SMS sms = new SMS();
        sms.Second_function();
    }

    public void Second_function()
    {
        Toast.makeText(getApplicationContext(),"Hello",1).show(); // This i anable to display and cause crash
        CallingCustomBaseAdapters();    //this was the adapter class and i anable to call this also
    }

Second_function を呼び出すことはできますが、Toast および CallCustomBaseAdapter() メソッドを取得できず、クラッシュが発生します。

その問題を解決するにはどうすればよいですか?

4

2 に答える 2

8
  public static void First_function(Context context)
  {
    SMS sms = new SMS();
    sms.Second_function(context);
  }

  public void Second_function(Context context)
  {
    Toast.makeText(context,"Hello",1).show(); // This i anable to display and cause crash
  }

これを実現する唯一の解決策は、現在のコンテキストをパラメーターとして渡す必要があることです。Toast のみのコードを作成しましたが、必要に応じて変更する必要があります。

First_function(getApplicationContext())アクティビティなどからコンテキストを渡します。

静的文字列の場合

public static String staticString = "xyz";

public static String getStaticString()
{
  return staticString;
}


String xyz = getStaticString();
于 2012-10-09T09:58:44.277 に答える
1

Context への参照が必要です。SMS インスタンス内からアプリケーション コンテキストを取得しようとしています。

Activity または Service から First_function を呼び出していると思います。だからあなたはこれを行うことができます:

Class SMS
{
    public static void First_function(Context context)
    {
        SMS sms = new SMS();
        sms.Second_function(context);
    }

    public void Second_function(Context context)
    {
        Toast.makeText(context,"Hello",1).show(); // This i anable to display and cause crash
        CallingCustomBaseAdapters();    //this was the adapter class and i anable to call this also
    }

次に、アクティビティから:

SMS.First_function(this); //or this.getApplicationContext() 
于 2012-10-09T09:55:41.843 に答える