尝试列出目录中的所有文件,该目录仅包含音频文件,但是当我在设备上运行应用程序时,应用程序崩溃,这里是主要的活动代码:
#include "Renderer2D.h"
class Batch2DRenderer : public Renderer2D
{
private:
GLuint m_VAO;
IndexBuffer * m_IBO;
GLsizei m_IndexCount;
GLuint m_VBO;
VertexData * m_Buffer;
std::vector<GLuint> m_TextureSlots;
public:
Batch2DRenderer();
~Batch2DRenderer();
void Begin() override;
void End() override;
void Submit(const Renderable2D& renderable) override;
void Submit(const Label& label) override;
void Submit(const Rectangle2D& rect) override;
void Submit(const Sprite& spr) override;
void Flush() override;
private:
void init();
float SubmitTexture(GLuint textureID);
};
由于我以前没有尝试过ListView,这对我来说似乎很陌生,其他问题在这里似乎也解决了我的问题。 这也是我的logcat:
public class MainActivity extends AppCompatActivity {
private List<String> myList;
File file;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ListView listView = (ListView) findViewById(R.id.listerX);
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() );
}
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)
因为您的list []
为空。你不能得到null
的长度。
将您的代码更改为
File list[] = file.listFiles();
if (list != null)
{
for( int i=0; i< list.length; i++)
{
myList.add( list[i].getName() );
}
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, android.R.id.text1, myList);
listView.setAdapter(adapter);
}
答案 1 :(得分:0)
您收到NullPointerException错误,因为您的列表未正确初始化并且始终返回null。
首先,您需要以正确的方式初始化它,以便您可以阅读它。
Hadi Mohammadi的回答不完整。通过这种方式,它将阻止您获取NullPointerException错误,但它仍然是null,因此您需要关注它。