0

見つけたチュートリアルからアクティビティクラスを設定しました。アクティビティクラスは、単に新しい画面を開き、mainActivityのテキストボックスからのメッセージを表示します。APPは、JSONデータを返すサーバー上のphpファイルを呼び出します。私がそれをテストするとき、その側はすべてブラウザでうまく機能します。

さて、Androidの問題です。そのデータをmessageActivityクラスに表示しようとしています。以下のコードを使用してそれを実行しようとしましたが、eclipseは、「コンストラクターIntent(Connect、Class)が未定義です」というインテント行にフラグを立てます。

私の質問は、JSONデータが表示されるようにアクティビティを起動する正しい方法は何ですか?次に、quaryDBメソッドを見ると、応答からmessageActivityにJSONデータを取得するにはどうすればよいですか?

主な活動:

public class MainActivity extends Activity {
RadioButton radioButton1, radioButton2, radioButton3;

public final static String EXTRA_MESSAGE = "com.example.xxxxxxx.MESSAGE";
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    radioButton1 = (RadioButton)findViewById(R.id.radioButton1);
    radioButton2 = (RadioButton)findViewById(R.id.radioButton2);
    radioButton3 = (RadioButton)findViewById(R.id.radioButton3);
    radioButton1.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View view) { 
            if (radioButton1.isChecked()){
                radioButton2.setChecked(false);
                radioButton3.setChecked(false);
            }

        }
    });

    radioButton2.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View view) { 
            if (radioButton2.isChecked()){
                radioButton3.setChecked(false);
                radioButton1.setChecked(false);
            }

        }
    });

    radioButton3.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View view) { 
            if (radioButton3.isChecked()){
                radioButton2.setChecked(false);
                radioButton1.setChecked(false);
            }

        }
    });



    Spinner spinner = (Spinner) findViewById(R.id.spinner);
 // Create an ArrayAdapter using the string array and a default spinner layout
 ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
         R.array.PracticeTypes, android.R.layout.simple_spinner_item);
 // Specify the layout to use when the list of choices appears
 adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
 // Apply the adapter to the spinner
 spinner.setAdapter(adapter);
 spinner.setOnItemSelectedListener(new MyOnItemSelectedListener());
 Connect c = new Connect();
 c.quaryDB(this);

}


public class MyOnItemSelectedListener implements OnItemSelectedListener{
public void onItemSelected(AdapterView<?> parent,
        View view, int pos, long id){
    Toast.makeText(parent.getContext(), "The Selected Practice is " + parent.getItemAtPosition(pos).toString(), Toast.LENGTH_LONG).show();
}
public void onNothingSelected(AdapterView parent){

}
 }
 public void sendMessage(View view){
    Intent intent= new Intent(this, DisplayMessageActivity.class);
    EditText editText = (EditText) findViewById(R.id.edit_message);
    String message = editText.getText().toString();
    intent.putExtra(EXTRA_MESSAGE, message);
    startActivity(intent);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.activity_main, menu);
    return true;

}

};

DisplayMessageActivity:

 public class DisplayMessageActivity extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_display_message);
   Intent intent = getIntent();
   String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);

   TextView textView= new TextView(this);
   textView.setTextSize(40);
   textView.setText(message);

   setContentView(textView);
 }
}

次に、JSONデータ応答を取得する接続クラス:

 public class Connect{

void Connect(){

}

public void quaryDB(Context context){

    Connection conn=null;
    try{
        HttpClient client = new DefaultHttpClient();
        HttpPost httppost = new HttpPost("http://10.0.0.6/DevServer/getAllByZip.php");
        HttpResponse response = client.execute(httppost);
        HttpEntity entity = response.getEntity();
        String succMsg = "Successful Execute.\n";

        Toast.makeText(context, succMsg, Toast.LENGTH_LONG).show();
    }
    catch (Exception e){
        String errMsg ="Cannot connect to database server.\n"+e.toString();
        Toast.makeText(context, errMsg, Toast.LENGTH_LONG).show();
    }
    finally{
        if (conn !=null){
            try{
                conn.close();
            }
            catch (Exception e){
            }
        }
    }
}
   public void sendMessage(View view){
        Intent intent= new Intent(this, DisplayMessageActivity.class);
        EditText editText = (EditText) findViewById(R.id.edit_message);
        String message = editText.getText().toString();
        intent.putExtra(EXTRA_MESSAGE, message);
        startActivity(intent);
    }   
    }

sendMessageメソッドはConnectクラスに正しく含まれているとは感じませんが、JSONデータをDisplayMessageActivityに適切に送信する方法がわかりません。その部分を理解した後、データの解析を開始し、実行する必要があることを実行できるようになります。

4

1 に答える 1

1

最初に問題を説明します:

のコンストラクターIntentは、最初のパラメーターとしてアクティビティコンテキストを期待しています。拡張するクラスで使用する場合は、アクティビティ自体である最初のパラメーターとしてActivity使用できます。this

Connect拡張されていないクラスで使用する場合、最初のパラメータとしてActivity使用すると、コンテキストがないthisクラスに戻ります。Connect

解決:

アクティビティから電話をかける場合sendMessageは、次の操作を実行できます。

活動中

sendMessage(this, myview);

クラスでConnect

public void sendMessage(Context context, View view){  
    Intent intent= new Intent(context, DisplayMessageActivity.class);  
    EditText editText = (EditText) findViewById(R.id.edit_message);  
    String message = editText.getText().toString();  
    intent.putExtra(EXTRA_MESSAGE, message);  
    startActivity(intent);  
} 

アクティビティから呼び出さない場合は、コンテキストをクラスコンストラクタに渡します。

public class Connect{      

Context context;
void Connect(Context context){      
   this.context = context;  
}  

これで、でコンテキストを使用できますsendMessage()

幸運を

于 2012-10-15T20:01:43.297 に答える