前两天学习浏览之际,刚看了一篇文章讲解这两者不同
由于也没有遇到相关的问题,到今天遇到错误之时,对这两者的印象已经只剩下字面意思:一个获取app的。一个获取activity的
哈哈。简单的度娘了一下,发现大部分回答也都是这样子说的。
先来说下我的问题吧。
LinearLayout(主布局)----ScrollView----LinearLayout----TextView
然后在activity中setContView(R.layout.main)获取的布局,
设置TextView一个长按监听事件,弹出Dialog对话框。
AlertDialog.Builder builder = new AlertDialog.Builder(getApplicationContext()); builder.show();
然后运行的时候竟然报错了。。。
java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
然后提示是builder.show的时候错误
</pre><pre name="code" class="html">一看妈蛋,主题不对,搜了一些都是因为继承activity之类的问题,而不是我的问题(我肯定是全部继承了啊)
</pre><pre name="code" class="html">因为这里的dialog其实我是自定义的,于是乎把他的主题改了一下,呵呵,没用
<span style="font-family: Arial, Helvetica, sans-serif;">那没办法,回头搜了下其他类里dialog的成功使用。。</span>
</pre><pre name="code" class="html">然后发现一个是this一个是<span style="font-family: Arial, Helvetica, sans-serif;">getApplicationContext()...好吧。我不会说这段代码是拷过来为了快速修错,</span>
<span style="font-family: Arial, Helvetica, sans-serif;">直接把xxx.this改成了</span><span style="font-family: Arial, Helvetica, sans-serif;">getApplicationContext()的</span>
虽然人为出错的原因呵呵了,但是要探究下这里面的机制嘛。。。
照理来说,app的context肯定比activity 的管用啊?为什么就不能用呢。
LinearLayout(主布局)----ScrollView----LinearLayout----TextView
然后在activity中setContView(R.layout.main)获取的布局,
设置TextView一个长按监听事件,弹出Dialog对话框。