我不知道我这样做是否正确,因为我是安卓编程的新手,但我已经设置了一个OnItemClickListener,通过开始一个新的意图来响应用户的列表选择。
当用户选择列表视图中的任何文章时,他们应该会在新活动中看到相应的txt文件。
因此,在新的活动中,我试图找到一种方法来打开Assets文件夹的子文件夹中的相应文件。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity);
Intent i = getIntent();
int position = i.getExtras().getInt("position");
TextView news = (TextView) findViewById(R.id.txtView);
AssetManager as = getAssets();
InputStream is;
try{
is = as.open(""); <----- !!!
int bytes = is.available();
byte[] b = new byte[bytes];
is.read(b);
is.close();
String s = new String (b);
news.setText(s);
}catch (IOException e){
e.printStackTrace();
}
}……但是,我只能成功打开一个txt文件。我如何实现此活动以响应前一个活动中的OnItemClickListener,如下所示...
ls = (ListView) findViewById(R.id.bArt);
ls.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> av, View v, int position, long id) {
Intent i = new Intent (getApplicationContext(), New_Activity.class );
i.putExtra("id", position);
startActivity(i);
}
});..。从资源文件夹中打开正确的.txt文件
我已经坚持了很长一段时间了,所以我对功能性答案的鉴赏点(没有现金价值)将是无穷无尽的。
发布于 2014-03-07 21:12:46
改变这一点
int position = i.getExtras().getInt("id");当您在Activity之间传递某些数据时,您的Id名称必须相同。
发布于 2014-03-07 21:25:00
将文件名存储在intent中,而不是存储位置。Yon可以使用AdapterView.getItemAtPosition检索它
ls.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> av, View v, int position, long id) {
Intent i = new Intent (getApplicationContext(), New_Activity.class );
i.putExtra("id", av.getItemAtPosition(position));
startActivity(i);
}
});在另一个活动中,检索文件名并将其传递给AssetsManager
String fileName = i.getStringExtra("id");
InputStream is;
try{
is = as.open(fileName); <----- !!!
// other code
}https://stackoverflow.com/questions/22250995
复制相似问题