按钮未进行活动启动

时间:2012-07-09 19:49:26

标签: java android

现在我的android模拟器上有一个强制关闭。

完成此应用程序后,我会想要自定义字段而不仅仅是测试,但是现在我只想让测试从http活动中显示出来。

任何帮助都会很棒!

MainActivity:

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 个答案:

答案 0 :(得分:3)

代码中存在很多问题:

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

使用第一个参数作为MainActivity.class而不是null

2)httpActivity应该有onCreate(或)onResume生命周期活动方法来为startActivity

创建活动

最重要的是,请花一些时间阅读文档和做示例程序,而不是仅仅输入内容并在SO上发布。通过你所有的问题,这就像SO社区为你做了你的应用程序。

答案 1 :(得分:1)

您必须像这样初始化Intent

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

您需要将Context作为第一个参数传递而不是 null

答案 2 :(得分:1)

从...开始:

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

而不是将null作为第一个参数传递给Intent Constructor

有关详细信息,请参阅此处

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

答案 3 :(得分:0)

我特意建议您阅读一些Android基础知识,因为代码中存在一些问题:

  1. 当您在按钮的侦听器上初始化intent时,您有 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 *。