0

私のアプリには、Web サイトから json を解析する 2 つのビューがあり、うまく機能します。私が持っている最後の問題は、編集テキスト ボックスに番号を入力し、それを URL に添付してユーザーをデータベースに追加するところです。それは機能しますが、そのイベントが開始されたときに、そのjsonを解析したいと思います。現在、ウェブサイトを立ち上げるだけです。

私の質問は、ウェブサイトを直接起動するのではなく、どうすればそのインテントを開始できるかということです。JSONParser と 2 つの jason アクティビティがうまく機能します。これが私のコードです。また、編集テキスト フィールドを SD カードに保存しているので、ユーザーはそのビューに戻ったときに再度呼び出すことができます。json を解析する方法は知っていますが、onClick イベントから別のビューに呼び出す方法がわかりません。

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    SharedPreferences mysettings2 = PreferenceManager.getDefaultSharedPreferences(this);
    String st1 = mysettings2.getString("THEME_PREF", "Blue");
    if(st1.equals("Blue"))
      {setTheme(R.style.Theme_Holo_blue); }
    if(st1.equals("Red"))
      {setTheme(R.style.Theme_Holo_red); }
    if(st1.equals("Green"))
      {setTheme(R.style.Theme_Holo_green); }
    if(st1.equals("Wallpaper"))
      {setTheme(R.style.Theme_Transparent); }
    if(st1.equals("Holo"))
      {setTheme(R.style.Theme_Holo); }

    setContentView(R.layout.getscore);
    getActionBar().setBackgroundDrawable(
            getResources().getDrawable(R.drawable.divider));

      edttext= (EditText)findViewById(R.id.editText1);
      Button tutorial2 = (Button) findViewById(R.id.button1);
      tutorial2.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {

            Intent intent = new Intent(Intent.ACTION_VIEW);
            intent.setData(Uri.parse("http://example.com/user/"+edttext.getText() +"?token=dYG8hW5TY4LBU8jfPb10D3IcsSx8RTo6"));
            startActivity(intent);

              try {
                  File myFile = new File("/sdcard/my_IdNumber_file.txt");
                  myFile.createNewFile();
                  FileOutputStream fOut = new FileOutputStream(myFile);
                  OutputStreamWriter myOutWriter = 
                                          new OutputStreamWriter(fOut);
                  myOutWriter.append(edttext.getText());
                  myOutWriter.close();
                  fOut.close();

              } catch (Exception e) {

              }
        }
      });   

          btnReadSDFile = (Button) findViewById(R.id.btnReadSDFile);
          btnReadSDFile.setOnClickListener(new OnClickListener() {

public void onClick(View v) {
    // write on SD card file data in the text box
try {
    File myFile = new File("/sdcard/my_IdNumber_file.txt");
    FileInputStream fIn = new FileInputStream(myFile);
    BufferedReader myReader = new BufferedReader(
            new InputStreamReader(fIn));
    String aDataRow = "";
    String aBuffer = "";
    while ((aDataRow = myReader.readLine()) != null) {
        aBuffer += aDataRow + "\n";
    }
    edttext.setText(aBuffer);
    myReader.close();

} catch (Exception e) {

}
   }

これは私の JSONParser アクティビティです

public class JSONParser {

static InputStream is = null;
static JSONArray jarray = null;
static String json = "";

// constructor
public JSONParser() {

}

public JSONArray getJSONFromUrl(String url) {

       StringBuilder builder = new StringBuilder();
        HttpClient client = new DefaultHttpClient();
        HttpGet httpGet = new HttpGet(url);
        try {
          HttpResponse response = client.execute(httpGet);
          StatusLine statusLine = response.getStatusLine();
          int statusCode = statusLine.getStatusCode();

          if (statusCode == 200) {
            HttpEntity entity = response.getEntity();
            InputStream content = entity.getContent();
            BufferedReader reader = new BufferedReader(new InputStreamReader(content));
            String line;
            while ((line = reader.readLine()) != null) {
              builder.append(line);
            }
          } else {
            Log.e("==>", "Failed to download file");
          }
        } catch (ClientProtocolException e) {
          e.printStackTrace();
        } catch (IOException e) {
          e.printStackTrace();
        }

    // try parse the string to a JSON object
    try {
        jarray = new JSONArray( builder.toString());
    } catch (JSONException e) {
        Log.e("JSON Parser", "Error parsing data " + e.toString());
    }

    // return JSON String
    return jarray;

}}
4

1 に答える 1

0

アクティビティの起動時にjsonを解析してから、 onCreate(); を解析します。

于 2013-10-21T06:06:18.467 に答える