初学着玩的遇到问题

hehamfll 2016-10-25 11:23:14

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

TextView t11=(TextView)findViewById(R.id.t11);

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
test();
}

public void test(){
//TextView t11=(TextView)findViewById(R.id.t11);
t11.setText("test");
}
}

无聊学者玩,java跟这个同步学,断断续续都没多久
代码如上,编译安装没问题,2个真机运行都出错,如果把test里的那个注释去掉就没问题,但是搞不懂啊!注释了test里那个我点击那个t11的时候会提示是引用的最上面的那个啊,难不成每个方法里每次用到都要先声明一下?
...全文
234 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
tcmakebest 2016-10-26
  • 打赏
  • 举报
回复
道理很简单, findViewById 需要在 setContentView 之后使用才能取得到.
hehamfll 2016-10-26
  • 打赏
  • 举报
回复
引用 6 楼 qq_18797297 的回复:
public class MainActivity extends AppCompatActivity { TextView t11;; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); t11=(TextView)findViewById(R.id.t11); test(); } public void test(){ //TextView t11=(TextView)findViewById(R.id.t11); t11.setText("test"); } } 这样写就可以了啊,其它方法里面就都能拿到已经赋值了的TextView了,java里就叫做全局变量。
谢谢,看来这段时间是白学了!
ink_s 2016-10-26
  • 打赏
  • 举报
回复
我有点糊涂了 public class MainActivity extends AppCompatActivity { TextView t11=(TextView)findViewById(R.id.t11); 这里不是已经赋值了么? 兄弟 是 你是给t11 赋值了 但是R.id.t11 你没有赋值啊 , 你让x=y有什么意义呢,不都是一个未知数吗? R.id.t11是在 setContentView后才赋值的
qq_18797297 2016-10-26
  • 打赏
  • 举报
回复
public class MainActivity extends AppCompatActivity { TextView t11;; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); t11=(TextView)findViewById(R.id.t11); test(); } public void test(){ //TextView t11=(TextView)findViewById(R.id.t11); t11.setText("test"); } } 这样写就可以了啊,其它方法里面就都能拿到已经赋值了的TextView了,java里就叫做全局变量。
hehamfll 2016-10-26
  • 打赏
  • 举报
回复
引用 1 楼 tcmakebest 的回复:
道理很简单, findViewById 需要在 setContentView 之后使用才能取得到.
不好意思还没搞明白,那我 TextView t11=(TextView)findViewById(R.id.t11);应该写在哪里才能让每一个方法能用到呢? test(); } TextView t11=(TextView)findViewById(R.id.t11); public void test(){ 这个位置也不行的,写oncreat里其他方法也用不到
hehamfll 2016-10-26
  • 打赏
  • 举报
回复
引用 3 楼 u010668114 的回复:
[quote=引用 2 楼 hehamfll 的回复:] [quote=引用 1 楼 tcmakebest 的回复:] 道理很简单, findViewById 需要在 setContentView 之后使用才能取得到.
啊!竟然是这样?我把oncreat理解成类似JAVA里的main了 谢谢,等会试试[/quote] 就算是java里的main,你的成员变量不赋值直接用也是空指针[/quote] 我有点糊涂了 public class MainActivity extends AppCompatActivity { TextView t11=(TextView)findViewById(R.id.t11); 这里不是已经赋值了么? test(); } TextView t11=(TextView)findViewById(R.id.t11); public void test(){ 然后写在这里也是不行的
只为搞笑 2016-10-26
  • 打赏
  • 举报
回复
引用 2 楼 hehamfll 的回复:
[quote=引用 1 楼 tcmakebest 的回复:] 道理很简单, findViewById 需要在 setContentView 之后使用才能取得到.
啊!竟然是这样?我把oncreat理解成类似JAVA里的main了 谢谢,等会试试[/quote] 就算是java里的main,你的成员变量不赋值直接用也是空指针
hehamfll 2016-10-26
  • 打赏
  • 举报
回复
引用 1 楼 tcmakebest 的回复:
道理很简单, findViewById 需要在 setContentView 之后使用才能取得到.
啊!竟然是这样?我把oncreat理解成类似JAVA里的main了 谢谢,等会试试
ink_s 2016-10-26
  • 打赏
  • 举报
回复
引用 9 楼 u010668114 的回复:
[quote=引用 7 楼 ink_s 的回复:] 我有点糊涂了 public class MainActivity extends AppCompatActivity { TextView t11=(TextView)findViewById(R.id.t11); 这里不是已经赋值了么? 兄弟 是 你是给t11 赋值了 但是R.id.t11 你没有赋值啊 , 你让x=y有什么意义呢,不都是一个未知数吗? R.id.t11是在 setContentView后才赋值的
你也许可以去看一下findViewById这个方法的源代码,当你在声明全局变量时赋值,的确是进行了赋值操作,但是这个方法会返回空,因为findViewById方法是必须在setContentView方法调用后再调用,才有效果的。[/quote] 搜嘎 但结果都一样 要 setContentView后用才正确哈 O(∩_∩)O
只为搞笑 2016-10-26
  • 打赏
  • 举报
回复
引用 7 楼 ink_s 的回复:
我有点糊涂了 public class MainActivity extends AppCompatActivity { TextView t11=(TextView)findViewById(R.id.t11); 这里不是已经赋值了么? 兄弟 是 你是给t11 赋值了 但是R.id.t11 你没有赋值啊 , 你让x=y有什么意义呢,不都是一个未知数吗? R.id.t11是在 setContentView后才赋值的
你也许可以去看一下findViewById这个方法的源代码,当你在声明全局变量时赋值,的确是进行了赋值操作,但是这个方法会返回空,因为findViewById方法是必须在setContentView方法调用后再调用,才有效果的。

80,472

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧