2012-02-19 85 views
0

我有我想要一個BTN當點擊保存JSON文件,然後另一個BTN將在一個TextView顯示解碼JSON文件保存JSON文件到內存然後調用該文件後

public class MainActivity extends Activity { 
/** Called when the activity is first created. */ 

String result = ""; 
InputStream is = null; 
TextView one = (TextView) findViewById(R.id.showView); 
HttpEntity entity = null; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 


    //pulls a file from my server then saves it 
    Button btn1 = (Button) findViewById(R.id.downloadBtn); 
    btn1.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 


      saveJson(); 

     //end of onClick  
     } 
    //end of onClickListener 
    }); 

    //should show the saved file 
    Button btn2 = (Button) findViewById(R.id.showBtn); 
    btn2.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 

      showJson(); 

     //end of onClick  
     } 
    //end of onClickListener 
    }); 

//end of oncreate()  
} 

public void saveJson(){ 

    TextView one = (TextView) findViewById(R.id.showView); 

    try{ 
      HttpClient httpClient = new DefaultHttpClient(); 
      HttpPost httpPost = new HttpPost("http://10.0.2.2/textures_story_list.php"); 

      HttpResponse response = httpClient.execute(httpPost); 
      entity = response.getEntity(); 
//from here what do i need to add to save the file as .json 
    }catch(Exception e) { 
     one.setText("error3"); 
    } 


//end of returnJson() 
} 

public void showJson(){ 

    //from here what should i have to show the file story_list.json 

try{ 



     is = entity.getContent(); 
     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) { 
     } 

    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) { 
    } 
     return; 


//end of returnJson() 
} 



//end of class body  
} 

它崩潰的startup_

runtimeExecption unable to instatiate activity ComponentInfo nullpointer 

確定在這裏固定的問題是我加入到保存,然後顯示該文件的代碼

public class MainActivity extends Activity { 
/** Called when the activity is first created. */ 

String result = ""; 
InputStream is = null; 
HttpEntity entity = null; 
HttpEntity readString = null; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 


    //pulls a file from my server then saves it 
    Button btn1 = (Button) findViewById(R.id.downloadBtn); 
    btn1.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 


      saveJson(); 

     //end of onClick  
     } 
    //end of onClickListener 
    }); 

    //should show the saved file 
    Button btn2 = (Button) findViewById(R.id.showBtn); 
    btn2.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 

      showJson(); 

     //end of onClick  
     } 
    //end of onClickListener 
    }); 

//end of oncreate()  
} 

public void saveJson(){ 

    TextView one = (TextView) findViewById(R.id.showView); 

    try{ 
      HttpClient httpClient = new DefaultHttpClient(); 
      HttpPost httpPost = new HttpPost("http://10.0.2.2/textures_story_list.php"); 

      HttpResponse response = httpClient.execute(httpPost); 
      entity = response.getEntity(); 
//from here what do i need to add to save the file as .json 
    }catch(Exception e) { 
     one.setText("error3"); 
    } 
    try{ 

     HttpEntity text = entity; 
     FileOutputStream fOut = openFileOutput("story.json",MODE_WORLD_READABLE); 
     OutputStreamWriter osw = new OutputStreamWriter(fOut); 
     osw.write(text); 
     osw.flush(); 
     osw.close(); 
     }catch(IOException ioe){ 
     } 

//end of returnJson() 
} 

public void showJson(){ 

    //from here what should i have to show the file story_list.json 

    try{ 
     FileInputStream fIn = openFileInput("story.json"); 
     InputStreamReader isr = new InputStreamReader(fIn); 
     char[] inputBuffer = new char[11]; 
     //len is the length of that saved string in the file 

     isr.read(inputBuffer); 

     // String readString = new String(inputBuffer); 





     isr = readString.getContent(); 
     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) { 
     } 

    try{ 
     JSONArray jArray = new JSONArray(result); 
     String storyNames = ""; 
     for(int i = 0;i<jArray.length();i++){ 
       storyNames += jArray.getJSONObject(i).getString("story_name") + "\n"; 
     } 
     TextView one = (TextView) findViewById(R.id.showView); 

     one.setText(storyNames); 
    } 
    catch(JSONException e) { 
    } 
     return; 


//end of returnJson() 
} 



//end of class body  
} 

有人可以幫助我解決錯誤或告訴我我做錯了什麼嗎?

+0

嗨 - 你的第一個問題是訪問衝突 - 你說你修復它。酷:)是否一切正常?如果不是,請特別說明出了什麼問題。如果可能,剪切/粘貼錯誤消息。告訴我們什麼具體行失敗 - 以及它如何失敗 - 當你通過調試器。如果你有一個問題 - 請不要讓我們猜測。指定究竟是什麼/在哪裏。好? – paulsm4 2012-02-19 23:09:59

回答

1

兩個建議:

1)將這種分配到您的onCreate()方法:

one = (TextView) findViewById(R.id.showView); 

2)如果你仍然有問題,然後一步步跟蹤代碼,以確定究竟在何處你」重試解引用空指針。我猜這可能是你的「findViewById()」調用之一。

+0

iv修復了這個問題,但仍然需要知道如何將代碼放入以保存並顯示json文件 – daniel 2012-02-19 06:31:24

相關問題