Note that there are some explanatory texts on larger screens.

plurals
  1. POStartActivity from different context
    primarykey
    data
    text
    <p>I've got a main class and a separete class (OnClickBtn.java) in which I want to keep just the button methos. I would like to start new activities not from the main class but from the OnClickBtn.java.</p> <p>I've run the program but it crashes at launch. I guess that my main issue is related to the code for the Intent object "Intent int_btnOpenA =new Intent(objContex, ActivityA.class)"</p> <p>This is my code, MainActivity.java:</p> <pre><code> package com.example.and2dtest; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends Activity { //START***VIEW LIST E BOTTONI TextView txtView01; Button btnOpenA; Button btnOpenB; EditText editText1; OnClickBtn btnMethods=new OnClickBtn(this); //END***VIEW LIST E BOTTONI @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //Start***set buttons views txtView01=(TextView)findViewById(R.id.txtView01); btnOpenA=(Button)findViewById(R.id.btnOpenA); btnOpenB=(Button)findViewById(R.id.btnOpenB); editText1=(EditText)findViewById(R.id.editText1); btnOpenA.setOnClickListener(btnMethods); btnOpenB.setOnClickListener(btnMethods); //end***set buttons views } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } } </code></pre> <p>this is the OnClickBtn.java class:</p> <pre><code>package com.example.and2dtest; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; public class OnClickBtn extends Activity implements OnClickListener { MainActivity objContex; public OnClickBtn(MainActivity cont){ objContex=cont; } Intent int_btnOpenA =new Intent(objContex, ActivityA.class); //&lt;&lt;THIS CAUSES CRASH! @Override public void onClick(View v) { switch(v.getId()){ case R.id.btnOpenA: Log.d("ZR", "in case btnOpenA"); //this.startActivity(int_btnOpenA); //&lt;-clearly This Wont Start break; case R.id.btnOpenB: Log.d("ZR","in case btnOpenB"); //do something break; } } } </code></pre> <p>how can I make it work, keeping the startActivity method not in the main activity?</p> <p>Thanks, Luther</p> <p>Ok I've been messing with the code and the following seems to work, ActivityA gets started not from MainActivity.java but from OnClickBtn.java, as I was trying to do. This is the code:</p> <p>MainActivity.java:</p> <pre><code>package com.example.and2dtest; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends Activity { //START***VIEW LIST E BOTTONI TextView txtView01; Button btnOpenA; Button btnOpenB; EditText editText1; //END***VIEW LIST E BOTTONI @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); OnClickBtn btnMethods=new OnClickBtn(this); //Start***set buttons views txtView01=(TextView)findViewById(R.id.txtView01); btnOpenA=(Button)findViewById(R.id.btnOpenA); btnOpenB=(Button)findViewById(R.id.btnOpenB); editText1=(EditText)findViewById(R.id.editText1); btnOpenA.setOnClickListener(btnMethods); btnOpenB.setOnClickListener(btnMethods); //end***set buttons views } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } } </code></pre> <p>OnClickBtn.java:</p> <pre><code>package com.example.and2dtest; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; public class OnClickBtn implements OnClickListener { Context objContext; public OnClickBtn(Context con){ //v=view; objContext=con; } //Intent int_btnOpenA =new Intent(objContext, ActivityA.class); @Override public void onClick(View v) { switch(v.getId()){ case R.id.btnOpenA: Log.d("ZR", "in case btnOpenA"); Intent int_btnOpenA =new Intent(objContext, ActivityA.class); objContext.startActivity(int_btnOpenA); break; case R.id.btnOpenB: Log.d("ZR","in case btnOpenB"); //do something break; } } } </code></pre> <p>ActivityA.java:</p> <pre><code>package com.example.and2dtest; import android.os.Bundle; import android.app.Activity; import android.view.Menu; public class ActivityA extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_activity); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.activity, menu); return true; } } </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload