这是一个简单的代码,用于使用Listview
填充目录中的文件。当用户点击列表中的元素时,该名称为Toasted,并且调用finish()
来结束Activity
。但问题是当用户单击列表中的每个元素时,它会对每个单击元素的名称进行Toast。我想知道finish()
方法会发生什么?这是我的源代码。 请在下面评论任何其他信息!
private List<String> myList;
File file;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_rec_lister);
ListView listView = (ListView) findViewById(R.id.listX);
myList = new ArrayList<String>();
File directory = Environment.getExternalStorageDirectory();
file = new File( directory + "/myAppCache/" );
File list[] = file.listFiles();
for( int i=0; i< list.length; i++)
{
myList.add( list[i].getName() );
}
listView.setOnItemClickListener(new AdapterView.OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> parent, final View view,
int position, long id) {
final String item = (String) parent.getItemAtPosition(position);
view.animate().setDuration(2000).alpha(0)
.withEndAction(new Runnable() {
@Override
public void run()
{
Toast.makeText(getApplicationContext(), "" + item,
Toast.LENGTH_LONG).show();
finish();
}
});
}
});
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, android.R.id.text1, myList);
listView.setAdapter(adapter); //Set all the file in the list.
}
答案 0 :(得分:0)
使用ActivityName.this.finish();
你在一个匿名的内心阶层里面记得。因此,您需要引用要明确完成的活动。
仅finish();
完成Runnable
对象。不是活动。
因此,请使用<ActivityName>.this.finish();
答案 1 :(得分:0)
可能是因为在finish()
内调用Runnable
,请尝试这样做:
YourActivity.this.finish();