Hej, mam ten kod, który powinien zapisać plik z serwera sql po kliknięciu pierwszego przycisku, a następnie wyświetlić go po naciśnięciu drugiego przycisku. pierwszy przycisk wydaje się działać, ale drugi przycisk powoduje awarię, oto mój kod
public class MainActivity extends Activity {
/** Called when the activity is first created. */
String result = "";
InputStream is = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button saveFile = (Button) findViewById(R.id.downloadBtn);
saveFile.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
returnJson();
}
});
Button showFile = (Button) findViewById(R.id.showBtn);
showFile.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
TextView showText = (TextView) findViewById(R.id.showView);
String FILENAME = "Story_One";
String showStoryNames = "";
FileInputStream fis = null;
try {
fis = openFileInput(FILENAME);
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
fis.read(showStoryNames.getBytes());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
fis.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
//end of onCreate
}
public void returnJson(){
try{
HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost("http://10.0.2.2/textures_story_list.php");
HttpResponse response = httpClient.execute(httpPost);
HttpEntity entity = response.getEntity();
is = entity.getContent();
}catch(Exception e) {
//one.setText("error3");
}
try{
BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
is.close();
result = sb.toString();
}catch(Exception e) {
//one.setText("error2");
}
try{
JSONArray jArray = new JSONArray(result);
String storyNames = "";
for(int i = 0;i<jArray.length();i++){
storyNames += jArray.getJSONObject(i).getString("story_name") + "\n";
String FILENAME = "Story_One";
String string = storyNames;
FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);
fos.write(string.getBytes());
fos.close();
}
}
catch(JSONException e) {
//one.setText("error1");
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return;
//end of returnJson()
}
//end of method body
}
Potrzebuję, aby ktoś mi powiedział, czy kod jest zapisywany w celu zapisania do wewnętrznego, a także dlaczego przycisk 2 ulega awarii.
Ok, więc to jest kod, który działa?
public void returnJson(){
TextView one = (TextView) findViewById(R.id.textView1);
try{
HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost("http://10.0.2.2/story_one.php");
HttpResponse response = httpClient.execute(httpPost);
HttpEntity entity = response.getEntity();
is = entity.getContent();
}catch(Exception e) {
one.setText("error3");
}
try{
BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
is.close();
result = sb.toString();
}catch(Exception e) {
one.setText("error2");
}
try{
JSONArray jArray = new JSONArray(result);
String storyNames = "";
for(int i = 0;i<jArray.length();i++){
storyNames += jArray.getJSONObject(i).getString("story_name") + "\n";
}
one.setText(storyNames);
}
catch(JSONException e) {
one.setText("error1");
}
return;
//end of returnJson()
}
Więc czy ktoś może mi powiedzieć, jakich kodów nie potrzebuję i czego potrzebuję i gdzie go umieścić, aby móc zapisać wynik z story_one.php, i czy można zostawić go jako json, tak jak konwertuję go później, gdy plik story_one jest używany
2 odpowiedzi
Wypróbuj poniższy kod, aby napisać ciąg do pliku.
try{
String text = "String that goes in the file"
FileOutputStream fOut = openFileOutput("filename.txt",MODE_WORLD_READABLE);
OutputStreamWriter osw = new OutputStreamWriter(fOut);
osw.write(text);
int len = text.length();
osw.flush();
osw.close();
}catch(IOException ioe){
}
Wypróbuj ten kod, aby odczytać plik, który zapisałeś wcześniej.
try{
FileInputStream fIn = openFileInput("filename.txt");
InputStreamReader isr = new InputStreamReader(fIn);
char[] inputBuffer = new char[len];
//len is the length of that saved string in the file
isr.read(inputBuffer);
String readString = new String(inputBuffer);
}catch(IOException e){
}
Podobne pytania
Nowe pytania
android
Android to mobilny system operacyjny Google, używany do programowania lub tworzenia urządzeń cyfrowych (smartfony, tablety, samochody, telewizory, Wear, Glass, IoT). W przypadku tematów związanych z Androidem użyj tagów specyficznych dla Androida, takich jak android-intent, android-activity, android-adapter itp. W przypadku pytań innych niż programowanie lub programowanie, ale związanych ze strukturą Androida, użyj tego linku: https: // android.stackexchange.com.