2013-12-12 58 views
0

我在修改我找到的源代码。通常当我制作用户界面时,我会用xml来做。 在这种情况下,它全部在java文件中完成(公共类SplashMenuView扩展视图)。将alertdialog添加到视图文件

有一个onTouchEvent事件发生时,按下某些东西。我尝试修改它,以便它显示alertdialog,而这会将我带到另一个活动。 问题是

AlertDialog.Builder alertDialog2 = new AlertDialog.Builder(HERE); 

我已经尝试添加需要什么那里,一切都使得它崩溃或只是给出错误。

通常我只是添加此活动的名称,但显然这是不可能的。

我看到他们加了码:

private Activity thisActivity; 

我尝试这样做,插入与此(SplashMenu)运行活动成,并插入到这一点的uilder,但它只是崩溃。

任何想法如何解决?

+0

您的课程扩展查看不活动。所以你需要活动传递活动的上下文,然后使用相同的alertdialog初始化 – Raghunandan

+0

@Raghunandan我很抱歉,我只是一个初学者。你能告诉我我做错了什么吗?我不明白 – Marshall

+0

为什么你不检查我的帖子 – Raghunandan

回答

0

你说你有

public class SplashMenuView extends View 

所以在Activity类

new SplashMenuView(ActivityName.this); 

然后

Context mcontext; 
    public SplashMenuView(Context context) 
    { 
     mcontext =context; 
    } 

然后

AlertDialog.Builder alertDialog2 = new AlertDialog.Builder(mcontext); 

您还可以使用

public final Context getContext()

返回视图中运行的背景下,通过它可以访问当前的主题,资源等

Context mcontext; 
public SplashMenuView() 
{ 
     mcontext =getContext(); 
} 

然后

AlertDialog.Builder alertDialog2 = new AlertDialog.Builder(mcontext); 
+0

这工作!非常感谢。 – Marshall

+0

那么你会怎么做呢,所以它去了另一个活动呢? – Marshall

+0

@Marshall在另一个可以使用'ActivityName.this'的活动中。可以使用活动上下文; – Raghunandan

0

如果您继承View,则可以使用getContext()获取正在运行的上下文。