1

配列で 2 つ以上の文字列を検索し、両方の文字列に関連する情報を返すアプリを構築しています。OnClick で title というタイトルの変数にアクセスする必要があります。ここに私のコード:

package com.rottenapi.applogictest;

import java.util.ArrayList;
import java.util.List;

import org.json.JSONArray; 

import org.json.JSONObject;

import android.os.Bundle;
 import android.app.Activity;
import android.util.Log;
 import android.view.Menu;

import android.widget.EditText;
import android.widget.Button;
import android.view.View;

public class Main extends Activity {

private static String url = "http://api.rottentomatoes.com/api/public/v1.0/movies/770672123/cast.json?apikey=3p9ehnhzbxwpbd6mk8fncf67";
private static String TAG_CAST = "cast";
private static String TAG_LINKS = "links";
private static String TAG_NAME = "name";

public static String TAG_REL = "rel";
private static String TAG_TITLE = "Title";

EditText enterName;
EditText enterNameTwo;
EditText result;


Button findMovie;

String searchOne;
String searchTwo;
public String title;

List<String> castMembers = new ArrayList<String>();

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



    JSONArray cast = null;

    JSONArray rel = null;

    JSONArray links = null;



    final JSONParser jParser = new JSONParser();

    final JSONObject jSon = jParser.getJSONFromUrl(url);



    enterName = (EditText) findViewById(R.id.enterName);
    enterNameTwo = (EditText) findViewById(R.id.enterNameTwo);
    result = (EditText) findViewById(R.id.result);

    searchOne = enterName.getText().toString();
    searchTwo = enterNameTwo.getText().toString();

    try{
        cast = jSon.getJSONArray(TAG_CAST);

        for(int i=0; i < cast.length(); i++){
            JSONObject c = cast.getJSONObject(i);

            String name = c.getString(TAG_NAME);

            castMembers.add(name);
        }

        if (castMembers.contains(searchOne) && castMembers.contains(searchTwo)){
            links = jSon.getJSONArray(TAG_LINKS);
            for(int i=0; i < links.length(); i++){
                JSONObject d = links.getJSONObject(i);

                String movieInfoLink = d.getString(TAG_REL);

                JSONObject jSonMovie = jParser.getJSONFromUrl(movieInfoLink);

                rel = jSonMovie.getJSONArray(TAG_REL);





            }for(int i =0; i < rel.length(); i++){

                JSONObject e = rel.getJSONObject(i);

                title = e.getString(TAG_TITLE);




            }
            findMovie.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    Log.d("Result contents", title);
                    result.setText(title);
                }
            });


        }

        }
        catch(Exception e){
            Log.e("Error", e.toString());
        }


}






@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.mainlayout, menu);
    return true;
}

これを実行すると、エミュレーターにアプリが表示されますが、ボタンをクリックしても何も起こらず、logcat にエラーも出力されません。結果のコンテンツ ログがログに出力されません。何が起こっているのですか?

4

2 に答える 2

1

Button findMovieは呼び出されませんfindViewById()

于 2012-08-19T03:51:39.650 に答える
0

これは、Button findMovieを のレイアウトidにリンクしていないためですButton。次の行をコードに追加するだけで機能します。

findMovie = (Button) findViewById(R.id.findMovieButton);

お役に立てれば..

于 2012-08-19T04:05:58.640 に答える