-2

今、私は私のアンドロイドエミュレーターに力を入れています。

このアプリを完成させたら、テストだけでなくカスタム フィールドを入れたいと思いますが、今のところは http アクティビティからテストを表示したいだけです。

どんな助けでも素晴らしいでしょう!

主な活動:

public class MainActivity extends Activity {

public final static String EXTRA_MESSAGE = "com.example.main.MESSAGE";


/*@SuppressLint("ParserError")
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}*/

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

private Button searchBtn;

@Override
protected void onCreate(Bundle savedInstance){
    super.onCreate(savedInstance);
    setContentView(R.layout.activity_main);

    searchBtn = (Button) findViewById(R.id.button1);

    searchBtn.setOnClickListener(new View.OnClickListener(){
        public void onClick(View v){
            Intent intent = new Intent(null, http.class);
            startActivity(intent);
        }
    });

}   
}

http:

public class http extends Activity {

public http(){
    httpMethod();
}


public void httpMethod(){
    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost("http://api.site.com/api/");

    try {
        // Add your data
        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
       ;

        // Execute HTTP Post Request
        HttpResponse response = httpclient.execute(httppost);

        String test = "hello";

        TextView myTextView = (TextView) findViewById(R.id.myTextView);
        myTextView.setText(test);

    } catch (ClientProtocolException e) {
        // TODO Auto-generated catch block
    } catch (IOException e) {
        // TODO Auto-generated catch block
    }
}    
 }

マニフェスト:

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="15" />

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".MainActivity"
        android:label="@string/title_activity_main" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name="com.example.main.DisplayMessageActivity"/>
    <activity android:name="com.example.main.http"/>
</application>
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
</manifest>
4

4 に答える 4

3

コードには多くの問題があります。

1) Intent intent = new Intent(null, http.class);

最初のパラメーターを null の代わりに MainActivity.class として使用する

2) httpActivityには、アクティビティを作成するためのonCreate(または)onResumeライフサイクル アクティビティ メソッドが必要です。startActivity

少なくとも、何かを入力してSOに投稿するのではなく、ドキュメントを読んだり、サンプルプログラムを実行したりすることに時間を費やしてください。すべての質問を確認することで、SO コミュニティがアプリを作成したようなものです。

于 2012-07-09T19:52:00.787 に答える
1

Intentこのように初期化する必要があります

Intent intent = new Intent(MainActivity.this, http.class);

null 以外Contextの最初のパラメーターとして渡す必要があります。

于 2012-07-09T19:51:32.303 に答える
1

次のように開始します。

searchBtn.setOnClickListener(new View.OnClickListener(){
        public void onClick(View v){
            Intent intent = new Intent(MainActivity.this, http.class);
            startActivity(intent);
        }
    });

nullIntent コンストラクターの最初のパラメーターとして渡す代わりに

詳細については、こちらをご覧ください

http://developer.android.com/reference/android/content/Intent.html

于 2012-07-09T19:54:00.207 に答える
0

コードにいくつかの問題があるため、Android の基本を読むことを強くお勧めします。

  1. ボタンのリスナーでインテントを初期化するときに、nullコンテキストがあります。あなたが持っている必要があります:Intent intent = new Intent(getApplicationContext(), http.class);またはIntent intent = new Intent(MainActivity.this, http.class);

  2. アティビティを作成し、その内容を設定する必要があります。少なくともonCreateメソッドをオーバーライドする必要があります。

  3. それほど重要ではありませんが、マシン用のコードを書くのではなく、誰でも理解できるコードを書くことをお勧めします! これは、メイン アクティビティのレイアウトとメニューを定義する *activity_main* sml ファイルがあるためです。これらのファイル名を、レイアウト用のmain.xmlや *main_mnu.xml* のような名前に変更することをお勧めします。

于 2012-07-09T20:41:49.440 に答える