AndroidStudio点击第一个界面里不同的3个textview,跳转至第二个界面且在textview分别滚动显示不同的txt文件,写代码
时间: 2023-08-31 07:31:20 浏览: 96
### 回答1:
首先,你需要在第一个界面中放置3个TextView,并设置它们的点击事件。在点击事件中,你需要使用Intent来启动第二个界面,并传递所选的txt文件的文件名。
接下来,在第二个界面中,你需要放置3个TextView,并设置它们的滚动属性。然后,你需要在OnCreate方法中获取从第一个界面传递过来的文件名,并根据文件名读取对应的txt文件内容,并将其设置到相应的TextView中。
下面是示例代码:
第一个界面代码:
```java
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private TextView tv1, tv2, tv3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv1 = findViewById(R.id.tv1);
tv2 = findViewById(R.id.tv2);
tv3 = findViewById(R.id.tv3);
tv1.setOnClickListener(this);
tv2.setOnClickListener(this);
tv3.setOnClickListener(this);
}
@Override
public void onClick(View v) {
Intent intent = new Intent(this, SecondActivity.class);
switch (v.getId()) {
case R.id.tv1:
intent.putExtra("fileName", "file1.txt");
break;
case R.id.tv2:
intent.putExtra("fileName", "file2.txt");
break;
case R.id.tv3:
intent.putExtra("fileName", "file3.txt");
break;
}
startActivity(intent);
}
}
```
第二个界面代码:
```java
public class SecondActivity extends AppCompatActivity {
private TextView tv1, tv2, tv3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
tv1 = findViewById(R.id.tv1);
tv2 = findViewById(R.id.tv2);
tv3 = findViewById(R.id.tv3);
Intent intent = getIntent();
String fileName = intent.getStringExtra("fileName");
String fileContent = readFile(fileName);
tv1.setMovementMethod(new ScrollingMovementMethod());
tv2.setMovementMethod(new ScrollingMovementMethod());
tv3.setMovementMethod(new ScrollingMovementMethod());
switch (fileName) {
case "file1.txt":
tv1.setText(fileContent);
break;
case "file2.txt":
tv2.setText(fileContent);
break;
case "file3.txt":
tv3.setText(fileContent);
break;
}
}
private String readFile(String fileName) {
String fileContent = "";
try {
InputStream inputStream = getAssets().open(fileName);
int size = inputStream.available();
byte[] buffer = new byte[size];
inputStream.read(buffer);
inputStream.close();
fileContent = new String(buffer, "UTF-8");
} catch (IOException e) {
e.printStackTrace();
}
return fileContent;
}
}
```
在这个示例中,我们假设你已经在assets文件夹中放置了三个txt文件,分别命名为file1.txt、file2.txt和file3.txt。请注意,在使用getAssets().open()方法读取文件时,文件名必须与实际文件名一致,包括文件扩展名。
### 回答2:
在Android Studio中实现这个功能,首先需要创建两个Activity,并在布局文件中添加TextView组件用于显示文本内容。
1. 第一个界面的布局文件(activity_first.xml):
```xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="TextView 1"
android:textSize="24sp"
android:clickable="true" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/textView1"
android:layout_centerHorizontal="true"
android:text="TextView 2"
android:textSize="24sp"
android:clickable="true" />
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/textView2"
android:layout_centerHorizontal="true"
android:text="TextView 3"
android:textSize="24sp"
android:clickable="true" />
</RelativeLayout>
```
2. 第二个界面的布局文件(activity_second.xml):
```xml
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/textViewContent"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="16dp"
android:textSize="18sp" />
</ScrollView>
```
3. 在MainActivity的onCreate方法中,为三个TextView设置点击监听器,并在监听器的onClick方法中实现跳转逻辑:
```java
public class MainActivity extends AppCompatActivity {
private TextView textView1;
private TextView textView2;
private TextView textView3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_first);
textView1 = findViewById(R.id.textView1);
textView1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
intent.putExtra("fileName", "file1.txt");
startActivity(intent);
}
});
textView2 = findViewById(R.id.textView2);
textView2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
intent.putExtra("fileName", "file2.txt");
startActivity(intent);
}
});
textView3 = findViewById(R.id.textView3);
textView3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
intent.putExtra("fileName", "file3.txt");
startActivity(intent);
}
});
}
}
```
4. 在SecondActivity的onCreate方法中,获取传递的文件名并读取文件内容,然后将内容设置到TextView中:
```java
public class SecondActivity extends AppCompatActivity {
private TextView textViewContent;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
textViewContent = findViewById(R.id.textViewContent);
String fileName = getIntent().getStringExtra("fileName");
String fileContent = readFileContent(fileName);
textViewContent.setText(fileContent);
}
private String readFileContent(String fileName) {
StringBuilder content = new StringBuilder();
try {
InputStream is = getAssets().open(fileName);
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String line;
while ((line = br.readLine()) != null) {
content.append(line).append("\n");
}
br.close();
is.close();
} catch (IOException e) {
e.printStackTrace();
}
return content.toString();
}
}
```
5. 将三个txt文件放置在\app\src\main\assets目录下(如file1.txt,file2.txt,file3.txt),每个文件存放相应的文本内容。
这样,当在第一个界面点击不同的TextView时,将跳转至第二个界面并根据所点击的TextView加载不同的txt文件内容,并在TextView中滚动显示。
### 回答3:
你好!以下是基于AndroidStudio的代码示例,实现点击第一个界面里不同的3个TextView,跳转至第二个界面且在TextView中分别滚动显示不同的txt文件。
在第一个界面(MainActivity.java)中,我们需要添加三个TextView,并给每个TextView添加点击事件。点击不同的TextView时,通过Intent将相应的txt文件路径传递给第二个界面。
```java
public class MainActivity extends AppCompatActivity {
private static final int REQUEST_TEXT_FILE = 1;
private TextView textView1, textView2, textView3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 初始化TextView
textView1 = findViewById(R.id.textView1);
textView2 = findViewById(R.id.textView2);
textView3 = findViewById(R.id.textView3);
// 为每个TextView添加点击事件
textView1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
openTextFile("file1.txt");
}
});
textView2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
openTextFile("file2.txt");
}
});
textView3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
openTextFile("file3.txt");
}
});
}
// 打开文本文件,并将文件路径传递给第二个界面
private void openTextFile(String fileName) {
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
intent.putExtra("file_path", fileName);
startActivityForResult(intent, REQUEST_TEXT_FILE);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// 处理第二个界面返回的结果
if (requestCode == REQUEST_TEXT_FILE && resultCode == RESULT_OK && data != null) {
String textContent = data.getStringExtra("text_content");
Toast.makeText(this, textContent, Toast.LENGTH_SHORT).show();
}
}
}
```
在第二个界面(SecondActivity.java)中,我们通过接收MainActivity传递的文件路径,并根据文件路径加载对应的txt文件内容,并将内容设置到TextView中。
```java
public class SecondActivity extends AppCompatActivity {
private TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
textView = findViewById(R.id.secondTextView);
// 接收MainActivity传递的文件路径
String filePath = getIntent().getStringExtra("file_path");
// 加载txt文件内容
String fileContent = loadTextFile(filePath);
// 设置文本内容到TextView中
textView.setText(fileContent);
}
// 加载txt文件内容
private String loadTextFile(String filePath) {
StringBuilder fileContent = new StringBuilder();
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(getAssets().open(filePath)));
String line;
while ((line = reader.readLine()) != null) {
fileContent.append(line);
fileContent.append("\n");
}
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
return fileContent.toString();
}
@Override
public void onBackPressed() {
// 将文本内容返回给MainActivity
Intent intent = new Intent();
intent.putExtra("text_content", textView.getText().toString());
setResult(RESULT_OK, intent);
super.onBackPressed();
}
}
```
请根据需要,将对应的txt文件放置在"app/src/main/assets"目录下,并命名为"file1.txt"、"file2.txt"、"file3.txt"。
希望以上内容对你有所帮助!如有任何疑问,请随时追问。