问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

android studio识别不出来明明应该有的方法addView(),代码见图,求大神看看可能是什么原因造成的

发布网友 发布时间:2022-04-24 23:09

我来回答

2个回答

热心网友 时间:2023-10-14 06:33

出现这个问题是因为题主试图在一个类的初始化域(Initializing Field)中进行除赋值及声明变量以外的操作,而这种操作在 Java 中是不允许的。通常一个 Java 公共类的结构如下:


public class Foo {
    
    // 这里叫做初始化域,用来声明一个类中的全局变量,此区域中只能进行
    // 赋值或声明新变量的操作,笼统一点说就是此区域中的代码必须是 
    // ImageView image = ...; 或者 ImageView image; 这种形式。
    // 题主的代码试图在此区域中调用 LinearLayout 的 addView 方法,却
    // 没有将其返回值赋予任何变量,所以会报错。
    int varOne = 3;
    private int varTwo = 3;
    public String varThree = "STR";
    protected String varFour = varThree.toString();
    int[] varFive = new int[] {3, 4, 5, 6};
    
    // 这个区块叫初始化块(Initializer Block),此区域中的所有代码会被
    // 复制到类的构造函数(下方)当中,所以此区域中可以进行方法的调用而不
    // 进行赋值。此区域是可有可无的。
    {
        varFour.toString();
    }
    
    // 这个区域叫做构造函数(Constructor),它是在该类对象被创建时第一个
    // 被调用的函数。构造函数的函数名需要与类名完全相同,且没有任何返回值,
    // (即连 void 也不会返回)。此函数的主要目的是初始化在初始化域中所定
    // 义的各种全局变量。构造函数不是必需的,如果没有此函数 Java 会自动
    // 继承父类的构造函数,如果没有父类 Java 会自动添加一个空的构造函数。
    public Foo(int a, String b, LinearLayout c) {
        this.varOne = a;
        ...
    }
    
    
    // 以下就是类的各种常规方法的定义了。
    private void methodOne() {
        ...
    }
    
    public void methodTwo() {
        ...
    }
    
    protected static String methodThree() {
        ...
    }
     
}


由上可见,如果想调用一个变量的方法,而不将其返回值赋予新的变量的话,必须在类的初始化块、构造函数或者各种方法中进行操作,而不能在其他地方。事实上,Android 的 Activity 类虽然没有定义构造函数,但提供了 onCreate 方法让你进行变量的初始化以及对变量的各种操作。onCreate 方法会在一个新的 Activity 对象建立后立即执行,所以题主应该将 addView 方法的执行移动到 onCreate 方法中,如下:


public class MainActivity extends AppCompatActivity {
    
    private int[] mImages = new int[] {
        R.drawable.image01,
        R.drawable.image02,
        R.drawable.image03
    };
    
    private int mCurrentImg = 0;
    private LinearLayout mLinearLayout;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        mLinearLayout = (LinearLayout) findViewById(R.id.rest);
        ImageView imageView = new ImageView(this);
        mLinearLayout.addView(imageView);
    }

}

热心网友 时间:2023-10-14 06:33

你将addview这个方法放到oncreate里面去执行
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
表格列求和公式怎么设置 求和函数公式怎么输入 北京注册成立一个公司需要多少钱 北京公司都是什么 手机导航地图语音怎么下载 如何分别真金和仿金首饰 怎样区分真金和仿金首饰呢 小学生新年晚会主持人的串词!!(不要太多)急 大大后天就需要了!!!_百度... 周年晚会策划公司 奥格瑞玛传送门大厅在哪 奥格瑞玛传送门大厅怎么走 Android7.0以后addview组件为什么会遮挡之前addview的组件 女宝宝4周岁身高体重标准 4周岁的男孩标准身高体重多少? 四周孩子标准身高 4周半男宝宝身高体重标准值 宝宝4周岁身高体重标准 4周宝宝身高体重标准 粘尘纸粘手机屏有影响吗? 水晶头接法难吗? 苹果手机丨D密码如何设置? 苹果x去隐藏丨d能正常用吗? 苹果手机App|e|D怎么关掉? 苹果电脑隐藏下面的图标怎样设置 水晶头两头的接法都一样吗 《我爸是创神》最新txt全集下载 小米商城信得过吗,可靠吗 刚刚下载了个小米商城,是真的小米商城吗? 不是小米手机下载小米商城在上面买东西靠谱吗 从小米商城这个应用里买手机可信吗? 小米商城是真的还是假的 android中自定义view为什么不显示 其中一个view不显示控件,什么原因 android listView 显示不全,为什么 android 在onclick回调中addview无效 android 开源库 Android-PullToRefresh 使用addHeaderView不显示? android addView()的问题 ,高手来看看 安卓通过addContentView加入的View怎样移除不显示啊 android simpleadapter不显示图片 Android的addView问题 android 5.windowmanager removeview之后 什么都不显示了 Android开发,在java代码中将ImageView添加到Tablerow中,设置ImageView图片的大小,可是设置完图片不显示 Android ViewFlipper, 怎么不显示图片 android:一些控件不显示,怎么办 Android 中,在service里定义View并显示出来,对LayoutParams有什么限定吗? android然后addView 其他xml布局里面的linearlayout Android layout addview方法 如何使用? Android用WindowManager调用addView后,画出的图无法更新 水晶头的A接法跟B接法有什么区别? 网线水晶接头接法有交叉有直接接法两种正常用哪种接法 与手机屏幕粘在一起的是什么膜?