나는 안드로이드 코딩을 처음 사용하고 ListView를 사용하여 프로젝트를 만들었습니다. 필자는 목록보기의 텍스트 파일에 정보를 표시하는 프로그램을 작성했습니다. 지금은 ListActivity를 확장하는 주 파일을 가지고 있으며 모든 것이 작동합니다. 주 파일이 다른 클래스를 호출 중입니다.listview를 사용하여 클래스에서 메서드 호출
fileop.ReadFileAsList("Installed_packages.txt");
텍스트 파일의 각 행을 읽습니다. 필자가 원하는 것은 FileOperations라는 클래스에서이 메서드를 만들고 현재 수행중인 작업을 정확하게 수행하는 것입니다. 그러나 다른 프로젝트의 기본 클래스는 Activity를 확장하고 Listactivity 및 Activity를 "호출하는"방법을 모르겠습니다. 나는 이것이 좋은 이유 때문에 아마 자바에서 할 수 있다고 생각하지 않는다. 누구든지 내가 어떻게 리팩터링해야하는지/보여줘야 하는지를 보여줄 수 있습니까? 아래에있는 코드가 메인 파일 다음에 :
결론 필자는 fileop에서이 방법을 만들고 FileAp를 주 프로젝트가 ListActivity가 아닌 Activity를 확장하는 새 프로젝트로 이동하려고합니다.
MAIN:
package com.example.hellolistview;
import android.app.ListActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
public class HelloListViewActivity extends ListActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, file));
ListView lv = getListView();
lv.setTextFilterEnabled(true);
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// When clicked, show a toast with the TextView text
Toast.makeText(getApplicationContext(), ((TextView) view).getText(),
Toast.LENGTH_SHORT).show();
}
});
}
static FileOperations fileop= new FileOperations();
static final String[] file =fileop.ReadFileAsList("Installed_packages.txt");
}
package com.example.hellolistview;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import android.os.Environment;
import android.util.Log;
public class FileOperations {
public String[] ReadFileAsList(String fileName){
try{
File f = new File(Environment.getExternalStorageDirectory()
+ "/Nullwall/" + fileName);
FileInputStream fileIS = new FileInputStream(f);
BufferedReader buf = new BufferedReader(new InputStreamReader(
fileIS));
StringBuilder DbLines = new StringBuilder();
String line = buf.readLine();
while (buf.readLine() != null)
{
DbLines.append(line);
DbLines.append("\r\n");
}
String[] ListItems = DbLines.toString().split("\r\n");
return ListItems;
}
catch (FileNotFoundException e) {
e.printStackTrace();
Log.e("FileOp_ReadFileAsList","File Not Found in ReadFileAsList()");
}
catch (IOException e) {
e.printStackTrace();
Log.e("FileOp_ReadFileAsList","IOException in ReadFileAsList()");
}
Log.e("FileOp_ReadFileAsList","Probably an Error in ReadFileAsList()");
return null;
}
}
편집 : 당신이 onCreate()
전에 ReadFileAsList()
방법을 요구하고있다
package com.IPR2.viewlog;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.widget.TextView;
public class Main extends Activity {
private TextView tv;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
FileOperations fileOperations = new FileOperations();
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tv = (TextView) findViewById(R.id.TextView01);
//fileOperations.ClearFile("Installed_packages.txt");
ApplicationOperations.ListAllInstalledApplications(getApplicationContext());
ReadFileAsList("Installed_packages.txt"); <--What Im trying to be able to do. It wont let me
}
public String[] ReadFileAsList(String fileName){
}
당신이 단지 FileOperations.java가 나는 또한'공공 정적 문자열 [] ReadFileAsList 같은이 방법을 만들 것 패키지 이름을 변경하고이를 사용하여 새 파일을 프로젝트에 있음을 복사 중요하지 않습니다 (...) '도우미 방법처럼. 필수 클래스에서 FileOperations.ReadFileAsList (....)와 같이 호출하십시오. –
내 주 파일 (HelloListViewActivity.java)은 ListActivity를 확장하므로 다음 오류가 발생하므로 ListActivity를 확장해야합니다. 'setListAdapter 및 getListView()가 정의되지 않았습니다. 어떻게 정의합니까? "Main"파일 (Main.java)에서 FileOperations.ReadFileasList ("Installed_packages.txt")를 호출하면됩니다. 지금처럼 실행하십시오. – PeterL