Java 使用保存的文件数组填充线性布局
我正在练习创建一个应用程序,允许用户在不同的活动中编写笔记、存储笔记并将其作为单独的图标查看。 我已经安排了三个不同的活动Java 使用保存的文件数组填充线性布局,java,android,Java,Android,我正在练习创建一个应用程序,允许用户在不同的活动中编写笔记、存储笔记并将其作为单独的图标查看。 我已经安排了三个不同的活动 主页:初始活动开始的位置 输入活动:用户写入和保存注释的地方 “工具架”活动以显示以前编写的笔记 总的来说,我相信我已经完成了与最初两项活动相关的任务。我能够保存这些文件,并且有一个简单的循环来增加文件名 我遇到的问题是在不同的活动中访问保存的文件。此外,我没有成功地从文件名创建数组 MainPageActivity public class MainPageActivit
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概念。我相信你能找到一本比我更好的教程/书/课程来解释它。此外,请考虑接受我的答案,如果它帮助您解决您的问题。祝你好运