显示Application类中的Toast消息

时间:2013-12-23 11:17:24

标签: android toast android-context

我的应用程序中有几个类。有些是Activities,Services和Pure java类。我知道我可以在Activity中显示Toast消息,但我想从纯java类中显示Toast。

在java类中,我将上下文传递给构造函数,但这似乎并不显示吐司。

我在Application类中创建了一个方法,该方法将String作为参数,希望我可以使用Application上下文生成Toast,这里没有任何欢乐。

如何从不是服务或活动等的类生成Toast。

public class LoginValidate{

public LoginValidate(Context context) {

        this.context = context;

        nfcscannerapplication = (NfcScannerApplication) context
                .getApplicationContext();


    }

public void someMethod(){

nfcscannerapplication.showToastMessage(result);

}

}

///然后在我的Application类

public void showToastMessage(String message){

            Toast.makeText(this.getApplictionContext(), "Encountered a problem with sending tag: " + message, Toast.LENGTH_LONG).show();

    }

6 个答案:

答案 0 :(得分:6)

首先像这样创建Application类..

public class ApplicationContext extends Application {

/** Instance of the current application. */
private static ApplicationContext instance;

/**
 * Constructor.
 */
public ApplicationContext() {
    instance = this;
}

/**
 * Gets the application context.
 * 
 * @return the application context
 */
public static Context getContext() {
    if (instance == null) {
        instance = new ApplicationContext();
    }
    return instance;
}

/**
     * display toast message
     * 
     * @param data
     */
    public static void showToast(String data) {
        Toast.makeText(getContext(), data,
                Toast.LENGTH_SHORT).show();
    }

}

从您的任何类ApplicationContext.showToast("your string");

调用此方法

注意上下文对象泄漏..

答案 1 :(得分:4)

有两种方法可以做到这一点,如果你有一个有效的上下文,你可以像@CapDroid一样写道:

public static void showToastWithTitle(String title) {
    Toast.makeText(getApplicationContext(), title, Toast.LENGTH_LONG).show();
}

如果不这样做,您也可以发送一个上下文,

public static void showToastWithTitleAndContext(Context context, String title) {
    Toast.makeText(context, title, Toast.LENGTH_LONG).show();
}

请注意,您可以在Application.java中定义静态Context,并使用它来调用shoh toast。

希望有所帮助。

答案 2 :(得分:2)

在您的应用程序类中编写此方法。您只需要在任何Activity中传递参数中的消息。

public void showToast(String message)
{
    Toast.makeText(getApplicationContext(), message, Toast.LENGTH_SHORT).show();
}

答案 3 :(得分:1)

它对我有用:

Toast.makeText(this.getContext(), R.string.title, Toast.LENGTH_LONG).show();

答案 4 :(得分:1)

需要将上下文传递到showToastMessage(String message)

赞这个showToastMessage(String message, Context context)

//然后在我的Application类中

public void showToastMessage(String message, Context context){

            Toast.makeText(context, "Encountered a problem with sending tag: " + message, Toast.LENGTH_LONG).show();

    }

答案 5 :(得分:0)

Toast.makeText(getActivity(), "Index....."+index, Toast.LENGTH_LONG).show();