Android 将微调器位置保存到文本文件

Android 将微调器位置保存到文本文件,android,Android,单击“保存”按钮时,我当前正试图将微调器的选定位置保存到文本文件中 目前这就是我所拥有的。微调器工作正常,但当我尝试添加零件以保存微调器位置(保存设置)时,这就是我的问题所在 我收到以下错误: Error:(56, 85) error: incompatible types: String cannot be converted to File Error:(61, 40) error: method getPosition in class ArrayAdapter<T> can

单击“保存”按钮时,我当前正试图将微调器的选定位置保存到文本文件中

目前这就是我所拥有的。微调器工作正常,但当我尝试添加零件以保存微调器位置(保存设置)时,这就是我的问题所在

我收到以下错误:

Error:(56, 85) error: incompatible types: String cannot be converted to File

Error:(61, 40) error: method getPosition in class ArrayAdapter<T> cannot be applied to given types;
required: CharSequence
found: no arguments
reason: actual and formal argument lists differ in length
where T is a type-variable:
T extends Object declared in class ArrayAdapter

Error:Execution failed for task ':app:compileDebugJavaWithJavac'.
> Compilation failed; see the compiler error output for details.
错误:(56,85)错误:不兼容的类型:字符串无法转换为文件
错误:(61,40)错误:类ArrayAdapter中的方法getPosition无法应用于给定类型;
必需:CharSequence
找到:没有参数
原因:实际参数列表和正式参数列表长度不同
其中T是一个类型变量:
T扩展类ArrayAdapter中声明的对象
错误:任务“:app:compiledBugJavaWithJavaC”的执行失败。
>编译失败;有关详细信息,请参阅编译器错误输出。
我认为问题在于我试图结合两种不同的方法,但由于我仍在学习,我对保存选定微调器位置的正确方法感到困惑

public class MainActivity extends AppCompatActivity {
    Spinner spinner;
    ArrayAdapter<CharSequence> adapter;
    String SelectedServer;

    /**
    * ATTENTION: This was auto-generated to implement the App Indexing API.
    * See https://g.co/AppIndexing/AndroidStudio for more information.
    */
    private GoogleApiClient client;

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

        spinner = (Spinner) findViewById(R.id.spinner);
        adapter = ArrayAdapter.createFromResource(this, R.array.serverUrl, android.R.layout.simple_spinner_item);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner.setAdapter(adapter);
        spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

                SelectedServer = parent.getItemAtPosition(position).toString();

            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {

            }


        });
    }

    public void saveSettings(View view) {

        File txtFolder = new File(Environment.getExternalStorageDirectory().getAbsolutePath()+"/MyFolder/");
        if (!txtFolder.exists()) {
            txtFolder.mkdir();
        }
        File file = new File(txtFolder, "setting.txt");
        String.valueOf(SelectedServer.getBytes());
        try {
            FileOutputStream fos = new FileOutputStream(file);
            fos.write(SelectedServer.getBytes());
            fos.close();
            Toast.makeText(getApplicationContext(),"Setting Saved", Toast.LENGTH_LONG).show();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}
public类MainActivity扩展了AppCompatActivity{
纺纱机;
阵列适配器;
字符串选择服务器;
/**
*注意:这是自动生成的,用于实现应用程序索引API。
*看https://g.co/AppIndexing/AndroidStudio 了解更多信息。
*/
私人谷歌客户;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
微调器=(微调器)findViewById(R.id.spinner);
adapter=ArrayAdapter.createFromResource(这个,R.array.serverUrl,android.R.layout.simple\u微调器\u项);
setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
旋转器。设置适配器(适配器);
spinner.setOnItemSelectedListener(新的AdapterView.OnItemSelectedListener(){
@凌驾
已选择公共视图(AdapterView父视图、视图视图、整型位置、长id){
SelectedServer=parent.getItemAtPosition(position.toString();
}
@凌驾
未选择公共无效(AdapterView父级){
}
});
}
公共void保存设置(视图){
File txtFolder=新文件(Environment.getExternalStorageDirectory().getAbsolutePath()+“/MyFolder/”;
如果(!txtFolder.exists()){
txtFolder.mkdir();
}
File File=新文件(txtFolder,“setting.txt”);
String.valueOf(SelectedServer.getBytes());
试一试{
FileOutputStream fos=新的FileOutputStream(文件);
fos.write(SelectedServer.getBytes());
fos.close();
Toast.makeText(getApplicationContext(),“设置已保存”,Toast.LENGTH_LONG.show();
}catch(filenotfounde异常){
e、 printStackTrace();
}捕获(IOE异常){
e、 printStackTrace();
}
}
}
因此,我正在寻求帮助解决此问题。
有什么建议吗?

这一行是第一个错误:

File txtFolder = Environment.getExternalStorageDirectory().getAbsolutePath()+"/MyFolder/";
您正在为文件分配
字符串
值。您可能希望将该值放入构造函数
新文件(字符串路径)

第二个错误是:

String SelectedServer = adapter.getPosition().toString();
我会使用
String.valueOf(adapter.getPosition())或隐式转换
“”+adapter.getPosition()


如果不是这样,那么您需要检查
getPosition
返回的内容(可能是空的)。

但是您的问题是什么?可能只是吹嘘代码的工作原理…:我已经编辑过了。很晚了,我很困@Vucko我希望它能工作:D@Dooves啊,我只是在和你开玩笑:)试着帮忙,看看答案。@Vucko非常感谢你修复了第一个错误。我想我已经设法重做了我的代码,这样第二个错误就被修复了。现在唯一的问题是,尽管应用程序正在运行,但我的logcat java.io.FileNotFoundException:/storage/emulated/0/MyFolder/setting.txt中出现以下错误:open failed:Enoint(没有这样的文件或目录)我已经更新了上面的代码以显示更改。任何人都知道为什么我不能创建文件夹,即使它不存在。我想我已经检查过了,如果我没有那么做。谢谢
String SelectedServer = adapter.getPosition().toString();