-1

I am trying to call another class from a class using intent but when i click the button it is made to force close the application and when i tried to debug it,it shows an error source not found. code is :

public void onClick(View v) {

Intent i=new Intent(getApplicationContext(),RegistrationActivity.class);
    startActivity(i);

        }
    });

 b2.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {

    Intent i=new Intent(getApplicationContext(),SearchDirectly1Activity.class);
         startActivity(i);

 }
 });

main activity xml code is::

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >

<TextView
    android:id="@+id/t1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="20dp"
    android:text="@string/Donate" />
<ImageView
    android:id="@+id/i1"
    android:layout_width="150dp"
    android:layout_height="150dp"
    android:layout_marginTop="20dp"
    android:layout_below="@id/t1"
    android:src="@drawable/ic_launcher"
    />

<Button
    android:id="@+id/b2"
    android:layout_width="150dp"
    android:layout_height="50dp"
    android:layout_alignRight="@+id/t1"
    android:layout_below="@+id/i1"
    android:layout_marginTop="41dp"
    android:text="@string/searching" />

<Button
    android:id="@+id/b1"
    android:layout_width="150dp"
    android:layout_height="50dp"
    android:layout_alignBaseline="@+id/b2"
    android:layout_alignBottom="@+id/b2"
    android:layout_toLeftOf="@+id/b2"
    android:text="@string/register" />

</RelativeLayout>

and main activity class is::

package donor.android.blooddonor;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends Activity {
Button b1;
Button b2;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    //buttons
    b1=(Button) findViewById (R.id.b1);
    b2=(Button) findViewById (R.id.b2);

    b1.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

Intent i=new Intent(getApplicationContext(),RegistrationActivity.class);
    startActivity(i);

        }
    });

 b2.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {

     Intent i=new Intent(getApplicationContext(),SearchDirectly1Activity.class);
         startActivity(i);

    }
   });
}
}

registrationactivity xml is::

package donor.android.blooddonor;

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

import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONException;
import org.json.JSONObject;

import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class RegistrationActivity extends Activity{
private ProgressDialog pDialog;
JSONParser jsonParser = new JSONParser();
EditText  et1;
EditText  et2;
EditText  et3;
EditText  et4;
EditText  et5;
EditText  et6;

private static String url_create_donor = "http://127.0.0.1/android_connect/create_donor.php";

    // JSON Node names
    private static final String TAG_SUCCESS = "success";

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.registration);


        // Edit Text
        et1 = (EditText) findViewById (R.id.et1);
        et2 = (EditText) findViewById (R.id.et2);
        et3 = (EditText) findViewById (R.id.et3);
        et4 = (EditText) findViewById (R.id.et4);
        et5 = (EditText) findViewById (R.id.et5);
        et6 = (EditText) findViewById (R.id.et6);
        // Create button
        Button b2 = (Button) findViewById (R.id.b2);




        // button click event
        b2.setOnClickListener(new View.OnClickListener()
        {
       public void onClick(View view) {
                // creating new donor in background thread
                new CreateDonor1().execute();
            }
        });
    }

     class CreateDonor1 extends AsyncTask<String, String, String> {

        protected void onPreExecute() {
            super.onPreExecute();
            pDialog = new ProgressDialog(RegistrationActivity.this);
            pDialog.setMessage("Creating DONOR..");
            pDialog.setIndeterminate(false);
            pDialog.setCancelable(true);
            pDialog.show();
        }

        protected String doInBackground(String... args) {
            String NAME = et1.getText().toString();
            String ADDRESS = et2.getText().toString();
            String PHONENUMBER = et3.getText().toString();
            String EMAIL = et4.getText().toString();
            String CITY = et5.getText().toString();
            String BLOODGROUP = et6.getText().toString();
            // Building Parameters
 List<NameValuePair> params = new ArrayList<NameValuePair>();
            params.add(new BasicNameValuePair("NAME", NAME));
            params.add(new BasicNameValuePair("ADDRESS", ADDRESS));
          params.add(new BasicNameValuePair("PHONENUMBER", PHONENUMBER));
            params.add(new BasicNameValuePair("EMAIL", EMAIL));
            params.add(new BasicNameValuePair("CITY", CITY));
           params.add(new BasicNameValuePair("BLOODGROUP", BLOODGROUP));
            // getting JSON Object
            // Note that create product url accepts POST method
    JSONObject json = jsonParser.makeHttpRequest(url_create_donor,
                    "POST", params);


            Log.d("Create Response", json.toString());

            try {
                int success = json.getInt(TAG_SUCCESS);

                if (success == 1) {
                    // successfully created donor
    Intent i = new Intent(getApplicationContext(), SuccessfulActivity.class);
                    startActivity(i);

                    // closing this screen
                    finish();
                } else {
                    // failed to create product
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }

            return null;
        }

        /**
         * After completing background task Dismiss the progress dialog
         * **/
        protected void onPostExecute(String file_url) {
            // dismiss the dialog once done
            pDialog.dismiss();
        }

    }
}

2 Answers2

1

pls check the answer by commonsware in the below link

When to call activity context OR application context?

public class MainActivity extends Activity implements OnClickListener 

Then in onCreate

Button b1 = (Button) findViewById(R.id.b1);
Button b2 = (Button) findViewById(R.id.b2);
b1.setOnClickListener(this);
b2.setOnClickListener(this);

Then override onClick

@Override
public void onClick(View v) {

  switch(v.getId())
  {
      case R.id.b1 :
           Intent i=new Intent(MainActivity.this,RegistrationActivity.class);
           startActivity(i);
      break;
      case R.id.b2 :
          Intent i=new Intent(MainActivity.this,SearchDirectly1Activity.class);
          startActivity(i);
      break;
  }

}

Or

In onCreate using annonymous inner class

Button b1 = (Button) findViewById(R.id.b1);
Button b2 = (Button) findViewById(R.id.b2);
b1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {

    Intent i=new Intent(MainActivity.this,RegistrationActivity.class);
    startActivity(i);
}
});
b2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {

    Intent i=new Intent(MainActivity.this,SearchDirectly1Activity.class);
    startActivity(i);
}
});

Make sure you have made an entry for the activities in manifest file

Community
  • 1
  • 1
Raghunandan
  • 132,755
  • 26
  • 225
  • 256
0

Do not use ApplicationContext to start activity,because application context do not ensure which activity task will use,and will throw Exception.

So you need to use Activity Context or Context from view(someView.getContext()) to start activity.

You may want to check the below link

When to call activity context OR application context?

Community
  • 1
  • 1
sky
  • 206
  • 1
  • 7