gpt4 book ai didi

java - 如何修复 Android 错误“类 Context 中的方法 openFileInput 无法应用于给定类型;2

转载 作者:行者123 更新时间:2023-11-30 00:47:03 24 4
gpt4 key购买 nike

在我的 MainActivity.java 中,我试图根据代码 given here 打开一个文件.但是在运行代码的时候

public class MainActivity extends AppCompatActivity {

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

final Button button = (Button) findViewById(R.id.btn1);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Toast.makeText(getBaseContext(), "YOUR TEXT HERE", Toast.LENGTH_LONG).show();
// Perform action on click

FileInputStream fis = getBaseContext().openFileInput("hello.txt", Context.MODE_PRIVATE);
InputStreamReader isr = new InputStreamReader(fis);
BufferedReader bufferedReader = new BufferedReader(isr);
StringBuilder sb = new StringBuilder();
String line;
while ((line = bufferedReader.readLine()) != null) {
sb.append(line);
}
}
});

}
}

我收到以下错误:

Error:(27, 55) error: method openFileInput in class Context cannot be applied to given types;
required: String
found: String,int
reason: actual and formal argument lists differ in length

我什至无法理解错误的含义。消息指的是什么“参数列表”?

最佳答案

正如@MuhammadKashifArif 所提到的:

代替这个

FileInputStream fis = getBaseContext().openFileInput("hello.txt",Context.MODE_PRIVATE);

用这个

FileInputStream fis = openFileInput("hello.txt", MODE_PRIVATE);

没关系。

Context 是上下文,getBase 上下文仍然是与其他所有内容相同的上下文,与使用 this 相比,调用 getBaseContext 不会更改上下文的类型在一个 Activity 中。访问MODE_PRIVATE没有区别静态地使用 import static

我不确定这到底是什么时候改变的(我不会查看每个版本的 android 来检查),但它是 openFileOutput它有两个参数,一个字符串和一个整数。

openFileInput现在只需要一个参数。所以:

FileInputStream fis = /*Some context here if you are outside an activity.*/openFileInput("hello.txt");

并加载:

FileOutputStream fos = /*some context if outside activity.*/openFileOutput("hello.txt", Context.MODE_PRIVATE);

我想再次澄清一个事实,即无论您调用 getBaseContext、getApplicationContext 还是调用 this 都没有区别。/SomeActivity.this在 Activity 中。上下文类本身不会改变,字段是相同的。和写作MODE_PRIVATE没有Context.在它前面称为静态导入。 Context.MODE_PRIVATE之间的唯一区别和静态导入 MODE_PRIVATE只是您不必键入这些字符。方法无论怎么称呼都不存在


至于编译错误,它基本上表示您提供的参数多于方法所需的参数。您还应该在调用该方法时看到红色警告,但您看到的是编译错误,因为您在调用未知方法时尝试编译构建。

关于java - 如何修复 Android 错误“类 Context 中的方法 openFileInput 无法应用于给定类型;2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41622006/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com