Java 使用保存的文件数组填充线性布局

Java 使用保存的文件数组填充线性布局,java,android,Java,Android,我正在练习创建一个应用程序,允许用户在不同的活动中编写笔记、存储笔记并将其作为单独的图标查看。 我已经安排了三个不同的活动 主页:初始活动开始的位置 输入活动:用户写入和保存注释的地方 “工具架”活动以显示以前编写的笔记 总的来说,我相信我已经完成了与最初两项活动相关的任务。我能够保存这些文件,并且有一个简单的循环来增加文件名 我遇到的问题是在不同的活动中访问保存的文件。此外,我没有成功地从文件名创建数组 MainPageActivity public class MainPageActivit

我正在练习创建一个应用程序,允许用户在不同的活动中编写笔记、存储笔记并将其作为单独的图标查看。 我已经安排了三个不同的活动

  • 主页:初始活动开始的位置
  • 输入活动:用户写入和保存注释的地方
  • “工具架”活动以显示以前编写的笔记
  • 总的来说,我相信我已经完成了与最初两项活动相关的任务。我能够保存这些文件,并且有一个简单的循环来增加文件名

    我遇到的问题是在不同的活动中访问保存的文件。此外,我没有成功地从文件名创建数组

    MainPageActivity

    public class MainPageActivity extends AppCompatActivity {
    
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
            setContentView(R.layout.activity_main_page);
            Toolbar toolbar = findViewById(R.id.toolbar);
            setSupportActionBar(toolbar);
            FloatingActionButton fab = findViewById(R.id.fab);
            fab.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View LoginActivity) {
                    Snackbar.make(LoginActivity, "Begin Writing Your Own Diary", Snackbar.LENGTH_LONG)
                            .setAction("Action", null).show();
                    launchActivity();
                }
            }
            );
        }
    
        public void launchActivity(){
            Intent intent = new Intent(this, InputActivity.class);
            startActivity(intent);
        }
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.menu_main_page, menu);
            return true;
        }
    
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            // Handle action bar item clicks here. The action bar will
            // automatically handle clicks on the Home/Up button, so long
            // as you specify a parent activity in AndroidManifest.xml.
            int id = item.getItemId();
    
            //noinspection SimplifiableIfStatement
            if (id == R.id.action_settings) {
                return true;
            }
    
            return super.onOptionsItemSelected(item);
        }
    }
    
    public class InputActivity extends AppCompatActivity {
        private TextView text;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_input);
            text = findViewById(R.id.textView);
            Button button = findViewById(R.id.button);
            button.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    saveText();
                    LaunchActivity();
                }
            });
        }
    
        public void saveText(){
            int num = 0;
            String fileContents = text.getText().toString();
            FileOutputStream outputStream;
            String fileName = ("");
            if (fileName == fileName) {
                num++;
                fileName = "diary"+num+".txt";
            }
            try {
                outputStream = openFileOutput(fileName, Context.MODE_PRIVATE);
                outputStream.write(fileContents.getBytes());
                outputStream.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        public void LaunchActivity(){
            Intent intent = new Intent(this, ShelfActivity.class);
            startActivity(intent);
        }
    }
    
    public class ShelfActivity extends AppCompatActivity {
        File path = getFilesDir();
        File file[]=path.listFiles();
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_shelf);
            Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
            setSupportActionBar(toolbar);
    
            FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
            fab.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                        .setAction("Action", null).show();
                }
            });
            loadViews();
        }
    
        public void loadViews() {
            String[] textArray = file[];
            LinearLayout linLayout = new LinearLayout(this);
            setContentView(linLayout);
            linLayout.setOrientation(LinearLayout.VERTICAL);
            for (int i = 0; i<textArray.length; i++) {
                TextView view = new TextView(this);
                view.setText(textArray[i]);
                linLayout.addView(view);
            }
        }
    
        public void loadFiles() {
    
        }
    }
    
    输入活动

    public class MainPageActivity extends AppCompatActivity {
    
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
            setContentView(R.layout.activity_main_page);
            Toolbar toolbar = findViewById(R.id.toolbar);
            setSupportActionBar(toolbar);
            FloatingActionButton fab = findViewById(R.id.fab);
            fab.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View LoginActivity) {
                    Snackbar.make(LoginActivity, "Begin Writing Your Own Diary", Snackbar.LENGTH_LONG)
                            .setAction("Action", null).show();
                    launchActivity();
                }
            }
            );
        }
    
        public void launchActivity(){
            Intent intent = new Intent(this, InputActivity.class);
            startActivity(intent);
        }
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.menu_main_page, menu);
            return true;
        }
    
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            // Handle action bar item clicks here. The action bar will
            // automatically handle clicks on the Home/Up button, so long
            // as you specify a parent activity in AndroidManifest.xml.
            int id = item.getItemId();
    
            //noinspection SimplifiableIfStatement
            if (id == R.id.action_settings) {
                return true;
            }
    
            return super.onOptionsItemSelected(item);
        }
    }
    
    public class InputActivity extends AppCompatActivity {
        private TextView text;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_input);
            text = findViewById(R.id.textView);
            Button button = findViewById(R.id.button);
            button.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    saveText();
                    LaunchActivity();
                }
            });
        }
    
        public void saveText(){
            int num = 0;
            String fileContents = text.getText().toString();
            FileOutputStream outputStream;
            String fileName = ("");
            if (fileName == fileName) {
                num++;
                fileName = "diary"+num+".txt";
            }
            try {
                outputStream = openFileOutput(fileName, Context.MODE_PRIVATE);
                outputStream.write(fileContents.getBytes());
                outputStream.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        public void LaunchActivity(){
            Intent intent = new Intent(this, ShelfActivity.class);
            startActivity(intent);
        }
    }
    
    public class ShelfActivity extends AppCompatActivity {
        File path = getFilesDir();
        File file[]=path.listFiles();
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_shelf);
            Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
            setSupportActionBar(toolbar);
    
            FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
            fab.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                        .setAction("Action", null).show();
                }
            });
            loadViews();
        }
    
        public void loadViews() {
            String[] textArray = file[];
            LinearLayout linLayout = new LinearLayout(this);
            setContentView(linLayout);
            linLayout.setOrientation(LinearLayout.VERTICAL);
            for (int i = 0; i<textArray.length; i++) {
                TextView view = new TextView(this);
                view.setText(textArray[i]);
                linLayout.addView(view);
            }
        }
    
        public void loadFiles() {
    
        }
    }
    
    ShelfActivity

    public class MainPageActivity extends AppCompatActivity {
    
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
            setContentView(R.layout.activity_main_page);
            Toolbar toolbar = findViewById(R.id.toolbar);
            setSupportActionBar(toolbar);
            FloatingActionButton fab = findViewById(R.id.fab);
            fab.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View LoginActivity) {
                    Snackbar.make(LoginActivity, "Begin Writing Your Own Diary", Snackbar.LENGTH_LONG)
                            .setAction("Action", null).show();
                    launchActivity();
                }
            }
            );
        }
    
        public void launchActivity(){
            Intent intent = new Intent(this, InputActivity.class);
            startActivity(intent);
        }
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.menu_main_page, menu);
            return true;
        }
    
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            // Handle action bar item clicks here. The action bar will
            // automatically handle clicks on the Home/Up button, so long
            // as you specify a parent activity in AndroidManifest.xml.
            int id = item.getItemId();
    
            //noinspection SimplifiableIfStatement
            if (id == R.id.action_settings) {
                return true;
            }
    
            return super.onOptionsItemSelected(item);
        }
    }
    
    public class InputActivity extends AppCompatActivity {
        private TextView text;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_input);
            text = findViewById(R.id.textView);
            Button button = findViewById(R.id.button);
            button.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    saveText();
                    LaunchActivity();
                }
            });
        }
    
        public void saveText(){
            int num = 0;
            String fileContents = text.getText().toString();
            FileOutputStream outputStream;
            String fileName = ("");
            if (fileName == fileName) {
                num++;
                fileName = "diary"+num+".txt";
            }
            try {
                outputStream = openFileOutput(fileName, Context.MODE_PRIVATE);
                outputStream.write(fileContents.getBytes());
                outputStream.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        public void LaunchActivity(){
            Intent intent = new Intent(this, ShelfActivity.class);
            startActivity(intent);
        }
    }
    
    public class ShelfActivity extends AppCompatActivity {
        File path = getFilesDir();
        File file[]=path.listFiles();
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_shelf);
            Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
            setSupportActionBar(toolbar);
    
            FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
            fab.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                        .setAction("Action", null).show();
                }
            });
            loadViews();
        }
    
        public void loadViews() {
            String[] textArray = file[];
            LinearLayout linLayout = new LinearLayout(this);
            setContentView(linLayout);
            linLayout.setOrientation(LinearLayout.VERTICAL);
            for (int i = 0; i<textArray.length; i++) {
                TextView view = new TextView(this);
                view.setText(textArray[i]);
                linLayout.addView(view);
            }
        }
    
        public void loadFiles() {
    
        }
    }
    
    在方法loadViews()中,出现意外的令牌错误

    我可能有其他我看不到的错误和功能错误。请指出它们,这样我就可以从错误中吸取教训

    PS,我的权限设置为:

    <uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE"/> 
    <uses-permission android:name="android.permission.READ_INTERNAL_STORAGE"/> 
    
    
    

    另外,我对Android Studio和Java基本上还是比较陌生的,您认为还有哪些方法更容易完成我正在尝试的任务?

    您正在尝试通过简单的赋值将文件数组转换为字符串数组。那是行不通的。请尝试以下方法:

    String[] textArray = new String[file.length];
    for(int i = 0; i < file.length; i++) {
        textArray[i] = file[i].getName();
    }
    

    嗨,谢谢你的回复,它帮助了很多!我还想问您,因为我有一个单独的方法loadViews(),这是否意味着我必须为路径或文件声明一个构造函数?我得到了未解决的符号,而我没有。我想知道它背后的原因,或者你是否有一个链接可以帮助我更好地理解Java结构。据我所知,它的目的是初始化类的对象,为什么这么重要?听起来你应该花点时间阅读一些基本的Java概念。我相信你能找到一本比我更好的教程/书/课程来解释它。此外,请考虑接受我的答案,如果它帮助您解决您的问题。祝你好运