Android 如何使用按钮OnClickListener在FloatWindow中获取活动上下文
我有一个FloatWindow,它有一个静态方法,带有Android 如何使用按钮OnClickListener在FloatWindow中获取活动上下文,android,android-context,Android,Android Context,我有一个FloatWindow,它有一个静态方法,带有view.Button OnClickListener, 当我单击视图时,我希望在任何活动中显示对话框,但是上下文不能使用getApplicationContext,它将显示“无法添加窗口标记null不适用于应用程序”,那么当我单击视图时如何获取活动上下文 //the Para is getapplicationcontext,but is not work public static void createStatusWindow(Co
view.Button OnClickListener
,
当我单击视图时,我希望在任何活动中显示对话框,但是上下文不能使用getApplicationContext
,它将显示“无法添加窗口标记null不适用于应用程序”
,那么当我单击视图时如何获取活动上下文
//the Para is getapplicationcontext,but is not work
public static void createStatusWindow(Context context) {
WindowManager windowManager = getWindowManager(context);
int screenWidth = windowManager.getDefaultDisplay().getWidth();
int screenHeight = windowManager.getDefaultDisplay().getHeight();
if (statusWindow == null) {
LayoutInflater mInflater = LayoutInflater.from(context);
statusWindow = mInflater.inflate(R.layout.floatwindow, null);
statusWindow.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
MessageBox.show("GPS Status", "Good", MessageBox.Icon.Alert,context,true);
}catch (Exception e){
e.printStackTrace();
}
}
});
}
尝试使用
yourActivityName。此
尝试使用yourActivityName来代替getApplicationContext()
代替getApplicationContext()
您可以从活动中创建一个引用,然后将其传递给createStatusWindow
方法:
public class YourActivity extends Activity{
private YourActivity mContext;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
mContext = this;
createStatusWindow(mContext);
}
现在将createStatusWindow
方法中的context
变量更改为final,如下所示:
public static void createStatusWindow(final Context context) {
WindowManager windowManager = getWindowManager(context);
int screenWidth = windowManager.getDefaultDisplay().getWidth();
int screenHeight = windowManager.getDefaultDisplay().getHeight();
if (statusWindow == null) {
LayoutInflater mInflater = LayoutInflater.from(context);
statusWindow = mInflater.inflate(R.layout.floatwindow, null);
statusWindow.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
MessageBox.show("GPS Status", "Good", MessageBox.Icon.Alert,context,true);
}catch (Exception e){
e.printStackTrace();
}
}
});
}
它将起作用。您可以从活动中创建一个引用,然后将其传递给您的createStatusWindow
方法:
public class YourActivity extends Activity{
private YourActivity mContext;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
mContext = this;
createStatusWindow(mContext);
}
现在将createStatusWindow
方法中的context
变量更改为final,如下所示:
public static void createStatusWindow(final Context context) {
WindowManager windowManager = getWindowManager(context);
int screenWidth = windowManager.getDefaultDisplay().getWidth();
int screenHeight = windowManager.getDefaultDisplay().getHeight();
if (statusWindow == null) {
LayoutInflater mInflater = LayoutInflater.from(context);
statusWindow = mInflater.inflate(R.layout.floatwindow, null);
statusWindow.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
MessageBox.show("GPS Status", "Good", MessageBox.Icon.Alert,context,true);
}catch (Exception e){
e.printStackTrace();
}
}
});
}
它会起作用的。最终确定<代码>createStatusWindow(最终上下文)
很抱歉,我没有说清楚,我的createStatusWindow()在服务中,当应用首次打开时,它会工作,因此,在服务中我可以获得活动吗?服务也是一个上下文。请将其设置为最终<代码>createStatusWindow(最终上下文)
很抱歉,我没有说清楚,我的createStatusWindow()在服务中,当应用首次打开时,它会工作,因此,在服务中我可以获得活动吗?服务也是一个上下文。请将其设置为最终createStatusWindow(最终上下文)
很抱歉,我没有说清楚,我的createStatusWindow()在一个服务中,当应用程序第一次打开时,它会工作,所以,在服务中我可以获得活动吗?服务也是一个上下文。但是我想在任何活动中显示对话框,所以活动名称无法修复,但我想在任何活动中显示对话框,所以活动名称无法修复,但我想在任何活动中显示对话框,所以活动名称无法修复抱歉,我没有说清楚,我的createStatusWindow()在服务中,当应用首次打开时,它会工作,所以,在服务中我可以获取活动吗?您可以将活动的引用传递给服务,并将其分配给上下文抱歉,我没有说清楚,我的createStatusWindow()在服务中,当应用首次打开时,它会工作,因此,在服务中我可以获取活动吗?您可以将活动的引用传递给服务,并将其分配给上下文抱歉,我没有说清楚,我的createStatusWindow()在服务中,当应用首次打开时,它会工作,因此,在服务中,我可以获取活动吗?您可以将活动的引用传递给服务,并将其分配给上下文