1

내 액티비티에서이 액티비티에서는 geApplication().fileList()을 호출하여 앱 파일의 모든 파일을 나열합니다. 내 Elephone P8000 전화에서getApplicationContext(). fileList() 일 때의 자바 작업 이름

, 나는 어떤 오류없이 새로운 파일을 생성, 관리,하지만 난 내 삼성 휴대 전화를하려고 할 때,이 문제는 "rList-와

enter image description here

파일을 팝업 asia.sumikawa "는 제가 만들지 않은 파일입니다.

실제로 "MainActivity"파일의 끝에있는 이름을 볼 때 그 이름이 내 활동 이름입니다.

어떻게 수정합니까?

편집

내 전체 틱 자바 코드

public class addressActivity extends Activity { 

ListView listView; 

String[] SavedFiles; 

/** 
* Called when the activity is first created. 
*/ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_address); 

    listView = (ListView) findViewById(R.id.listView); 

    addData(); 
    editData(); 
    ShowSavedFiles(); 
    editContent(); 
    setMultiDelete(); 
    listView.setOnItemClickListener(getURLOnItemClickListener); 
} 

void ShowSavedFiles() { 
    //SavedFiles = getApplicationContext().fileList(); 
    //SavedFiles = getApplication().fileList(); 
    SavedFiles = addressActivity.this.fileList(); 
    ArrayAdapter<String> adapter 
      = new ArrayAdapter<String>(this, 
      android.R.layout.simple_list_item_1, 
      SavedFiles); 

    listView.setAdapter(adapter); 
    if (adapter.isEmpty()) { 
     Toast.makeText(getBaseContext(), "There is no Address !", Toast.LENGTH_LONG).show(); 
    } 
} 

OnItemClickListener getURLOnItemClickListener 
     = new OnItemClickListener(){ 

    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, 
          long id) { 
     // TODO Auto-generated method stub 
     String clickedFile = (String) parent.getItemAtPosition(position); 
     getURL(clickedFile); 
    } 

}; 

void getURL(final String file){ 
    if (clickAble == true){ 
     FileInputStream fis; 
     String content = ""; 
     try { 
      fis = openFileInput(file); 
      byte[] input = new byte[fis.available()]; 
      while (fis.read(input) != -1) {} 
      content += new String(input); 
      //Toast.makeText(getBaseContext(),content,Toast.LENGTH_SHORT).show(); 
     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     Intent i = new Intent(addressActivity.this, liveActivity.class); 
     String strName = content.toString(); 
     i.putExtra("urlAddress", strName); 
     startActivity(i); 
    } 
} 

OnItemClickListener getFileEditContent = new OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
     String clickedFile = (String)parent.getItemAtPosition(position); 
     setMultiEdit(clickedFile); 
     // change the checkbox state 
     CheckedTextView checkedTextView = ((CheckedTextView) view); 
     if (checkedTextView.isChecked()) { 

      ((CheckedTextView)view).setChecked(true); 
      checkedTextView.setChecked(!checkedTextView.isChecked()); 
      utils.myPosInt.clear(); 
      utils.myPos.clear(); 
      utils.myPosTitle.clear(); 

     } else { 
      for(int i=0; i<listView.getChildCount();i++) 
      { 
       view = listView.getChildAt(i); 
       ((CheckedTextView)view).setChecked(false); 
      } 

      checkedTextView.setChecked(!checkedTextView.isChecked()); 
      utils.myPosTitle.add(clickedFile); 
     } 

    } 
}; 
+0

은 당신의 프로젝트를 청소하려고합니다 .'Build -> clean'. – skydroid

+1

@skydroid 전에 시도한 적이 있지만 여전히 작동하지 않습니다. 나는 getApplicationContext()를 getApplication()으로 대체하여 아무런 차이가없는 것을 보았습니다. –

답변

0

여기 내 코드의

test.xml의

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <ListView 
     android:id="@+id/test_list" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"/> 

</LinearLayout> 

테 문서

fileList()

에서 st.java

public class Test extends AppCompatActivity 
{ 
    @Bind(R.id.test_list) 
    ListView listView; 
    String[] SavedFiles; 
    @Override 
    protected void onCreate(@Nullable Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.test); 
     ButterKnife.bind(this); 

     ShowSavedFiles(); 
    } 
    void ShowSavedFiles() 
    { 
     SavedFiles = getApplicationContext().fileList(); 
     ArrayAdapter<String> adapter 
       = new ArrayAdapter<String>(this, 
       android.R.layout.simple_list_item_1, 
       SavedFiles); 

     listView.setAdapter(adapter); 
     if (adapter.isEmpty()) { 
      Toast.makeText(getBaseContext(), "There is no Address !", Toast.LENGTH_LONG).show(); 
     } 
    } 

} 

출력

output

fileList() :이 컨텍스트의 응용 프로그램 패키지에 연결된 개인 파일 의 이름을 지정하는 문자열 배열을 반환합니다. 이 도움이

대체

String[] iFileList = YourActivityName.this.fileList(); 

희망 ..

UPDATE

이 다른 솔루션을 시도

String dataDr=getApplicationInfo().dataDir; 
    Log.i(TAG,"data dir"+dataDr); 

    showDirFile(dataDr); 


    void showDirFile(String dirpth) 
    { 
     String path = dirpth+"/files"; 
     Log.d("Files", "Path: " + path); 
     File f = new File(path); 
     File file[] = f.listFiles(); 
     Log.d("Files", "Size: "+ file.length); 

     SavedFiles=new String[file.length]; 
     for (int i=0; i < file.length; i++) 
     { 
      Log.d("Files", "FileName:" + file[i].getName()); 

      SavedFiles[i]=file[i].getName(); 
     } 

     ArrayAdapter<String> adapter 
       = new ArrayAdapter<String>(this, 
       android.R.layout.simple_list_item_1, 
       SavedFiles); 

     listView.setAdapter(adapter); 


    } 
+1

코드는 사실 ButterKnife.bind (this);를 제외하고는 실제로 제 코드와 같습니다. 그게 뭐야? –

+0

그것의 중요하지 않습니다. 그냥 의존성 주입 [ButterKnife] (https : // github.com/JakeWharton/butterknife) – skydroid

+1

도움을 주셔서 감사합니다. 그러나 코드를 사용하면 어댑터에서'dataDr'을 사용하여 listview에 표시하거나 listview가 onCreate에서 메서드를 호출 할 때 아무 것도 표시하지 않습니다. 만약에 대비해 코드를 편집했습니다. –