1
My code below was to do a simple task, when clicking the button change to another screen, but is giving error:
Cannot make a Static Reference to the non-static method chamaCadastro() from the type Mainactivity
I’ve already changed the chamaCadastro
to static, but the error changes to:
Cannot make a Static Reference to the non-static method setContentView(int) from the type Actionbaractivity
Follows my code:
MainActivity.java
package br.com.navegandoemtelas;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.ActionBar;
import android.support.v4.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.os.Build;
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_main);
chamaMenuPrincipal();
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment())
.commit();
}
}
public void chamaMenuPrincipal(){
setContentView(R.layout.activity_main);
}
public void chamaCadastro(){
setContentView(R.layout.cadastros);
}
@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;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
/**
* A placeholder fragment containing a simple view.
*/
public static class PlaceholderFragment extends Fragment {
Button btCadastro;
public PlaceholderFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_main, container, false);
btCadastro = (Button) rootView.findViewById(R.id.btCadastrar);
btCadastro.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
chamaCadastro();
}
});
return rootView;
}
}
}
I recommend creating Classes always in different files after giving import gets much better to work and identify possible errors.
– Paulo Roberto Rosa
@Jamesortiz, are you taking Neri’s course? This way of changing the screen by changing the content with setContentView is typical of him and is bad practice. Create separate activities or Fragments and navigate with startActivity or Fragment change with Fragmentmanager. And if it is Neri’s course, stop now and look for another source :)
– Douglas Drumond Kayama