Toyo
Toyo

Reputation: 751

Crash when creating Activity

Good evening Stack !

I have started to learn Android development as a hobby and I am now trying to develop my first "real" application (I have made already only five simple applications from books).

In this application, I have two buttons that will "create" the same Activity but by using two different objects from the same base class, hence allowing me to customize the behavior of the application depending on the button that was clicked. However, when I am trying to create the Intent instance, my application crashes.

Here is the code of the base Activity class

public class BaseDictionnaryActivity extends Activity 
{
    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.basedictionnary);
    }

    public void onDestroy() 
    {   
        super.onDestroy();
    }
}

and here is the code that crashes. The line is the one creating the Intent object.

public class DictionnaryActivity extends Activity 
{
    private BaseDictionnaryActivity jlpt1;
    private BaseDictionnaryActivity jlpt2;

    private Button btjlpt1 = null;
    private Button btjlpt2 = null;

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

        jlpt2 = new BaseDictionnaryActivity();
        jlpt1 = new BaseDictionnaryActivity();

        btJLPT1 = (Button)findViewById(R.id.jlpt1);
        btJLPT1.setOnClickListener(new View.OnClickListener()
        {
            public void onClick(View v)
            {
                Intent myIntent = new Intent(DictionnaryActivity.this,   
                                             jlpt1.getClass());
                jlpt1.this.startActivity(myIntent); 
            }
        }); 
        btJLPT2 = (Button)findViewById(R.id.jlpt2);
        btJLPT2.setOnClickListener(new View.OnClickListener()
        {
            public void onClick(View v)
            {
                Intent myIntent = new Intent(DictionnaryActivity.this, 
                                             jlpt2.getClass());
                jlpt2.this.startActivity(myIntent); 
            }
        });
     }
     public void onDestroy() 
     {   
          super.onDestroy();
     }
}

Thank you for your help !

Upvotes: 0

Views: 93

Answers (5)

Hassan Jawed
Hassan Jawed

Reputation: 1650

Replace jlpt1.getClass() with NameOfClassToBeLaunched.class Also this is bad practice to create Activity instances in other activities.

Upvotes: 0

Sardor Dushamov
Sardor Dushamov

Reputation: 1667

Maybe:
Intent myIntent = new Intent(DictionnaryActivity.this,   
                                         BaseDictionnaryActivity.class);
startActivity(myIntent);

Upvotes: 1

Hardik Joshi
Hardik Joshi

Reputation: 9507

Intent myIntent = new Intent(DictionnaryActivity.this, 
                                         jlpt2.class);
                                         ^^^^^^^^^^^^

You need to provide next activity .class in second argument of Intent.

Upvotes: 0

user370305
user370305

Reputation: 109257

Just to make correction,

Intent myIntent = new Intent(DictionnaryActivity.this,   
                                         jlpt1.getClass());

In this the second argument must be, your target activity BaseDictionnaryActivity.class

So, it looks something like,

Intent myIntent = new Intent(DictionnaryActivity.this,   
                                         BaseDictionnaryActivity.class);
startActivity(myIntent);

Also please make sure there will be entry of BaseDictionnaryActivity in your Application's manifest file,

Which is look like,

<activity android:name=".BaseDictionnaryActivity"
         ....>
 </activity>

Upvotes: 4

Naveen Kumar
Naveen Kumar

Reputation: 3818

change this

 Intent myIntent = new Intent(DictionnaryActivity.this, 
                                             NextActivity.class);

Upvotes: 0

Related Questions