我是靠谱客的博主 土豪鸡,最近开发中收集的这篇文章主要介绍Android学习笔记(一):AndroidStudio无法从静态上下文中引入非静态方法setGravity()和show()无法从静态上下文中引入非静态方法,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
无法从静态上下文中引入非静态方法
笔者在学习《Android编程权威指南第三版》的过程中,在第一章挑战练习“定制toast消息”遇到了问题,笔者由于缺乏java基础,迟迟不能解决。
原代码
package com.bignerdranch.android.geoquiz;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class QuizActivity extends AppCompatActivity {
private Button mTrueButton;
private Button mFalseButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_quiz);
mTrueButton = (Button) findViewById(R.id.true_button);
mTrueButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(QuizActivity.this,
R.string.correct_toast,
Toast.LENGTH_SHORT).show();
}
});
mFalseButton = (Button) findViewById(R.id.false_button);
mFalseButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(QuizActivity.this,
R.string.incorrect_toast,
Toast.LENGTH_SHORT).show();
}
});
}
}
这是第一章已经给出的关于toast部分的代码,现在要求更改代码使toast消息从屏幕顶部弹出而不是底部弹出,这需要用到setGravity.TOP命令。我尝试写出了如下代码:
报错的代码
package com.bignerdranch.android.geoquiz;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.Gravity;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class QuizActivity extends AppCompatActivity {
private Button mTrueButton;
private Button mFalseButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_quiz);
mTrueButton = findViewById(R.id.true_button);
mTrueButton.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
Toast.makeText(QuizActivity.this,
R.string.correct_toast,
Toast.LENGTH_SHORT);
Toast.setGravity(Gravity.TOP,0,0);//该句报错
Toast.show();//该句报错
}
});
mFalseButton = findViewById(R.id.false_button);
mFalseButton.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
Toast.makeText(QuizActivity.this,
R.string.incorrect_toast,
Toast.LENGTH_SHORT);
Toast.setGravity(Gravity.TOP,0,0);//该句报错
Toast.show();//该句报错
}
});
}
}
编译问题截图
问题分析
在AppCompaActivity下onCreate的静态类环境中错误的引用了非静态方法。正确的做法,应该通过Toast toast =Toast.***的方法来实现。
解决问题后的代码
public class QuizActivity extends AppCompatActivity {
private Button mTrueButton;
private Button mFalseButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_quiz);
mTrueButton = findViewById(R.id.true_button);
mTrueButton.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
Toast toast1 =Toast.makeText(QuizActivity.this,
R.string.correct_toast,
Toast.LENGTH_SHORT);
toast1.setGravity(Gravity.TOP,0,0);
toast1.show();
}
});
mFalseButton = findViewById(R.id.false_button);
mFalseButton.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
Toast toast2 =Toast.makeText(QuizActivity.this,
R.string.incorrect_toast,
Toast.LENGTH_SHORT);
toast2.setGravity(Gravity.TOP,0,0);
toast2.show();
}
});
}
}
最后
以上就是土豪鸡为你收集整理的Android学习笔记(一):AndroidStudio无法从静态上下文中引入非静态方法setGravity()和show()无法从静态上下文中引入非静态方法的全部内容,希望文章能够帮你解决Android学习笔记(一):AndroidStudio无法从静态上下文中引入非静态方法setGravity()和show()无法从静态上下文中引入非静态方法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复