I'm trying to implement a stack (database), the problem is that I'm not able to send my data to the other Activity's in my application, so when I open another activity to check if the data is there, it I want to be able to access the data in my stack regardless of the activity I'm in without being deleted)
Main
public class Principal extends AppCompatActivity { private Button btn; private EditText texto; public BancodeDados DB = new BancodeDados(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_principal); texto = (EditText) findViewById(R.id.texto); btn = (Button) findViewById(R.id.btn); texto.setText("Insira um dado"); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String y = texto.getText().toString(); DB.InserirDado(y); pagina2 receber = new pagina2(); receber.recebe(DB); Toast.makeText(v.getContext(),"Enviado",Toast.LENGTH_LONG).show(); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return super.onCreateOptionsMenu(menu); } @Override public boolean onOptionsItemSelected (MenuItem item){ Intent i = null; switch(item.getItemId()) { case R.id.mnTela1: i = new Intent(this, pagina2.class); Toast.makeText(this, "item1", Toast.LENGTH_LONG).show(); startActivity(i); break; case R.id.mnTela2: Toast.makeText(this, "item2", Toast.LENGTH_LONG).show(); break; } return super.onOptionsItemSelected(item); } }
Secondary Activity
public class pagina2 extends AppCompatActivity{ private EditText data; private Button btn; BancodeDados DataBase = new BancodeDados(); public void recebe(BancodeDados DB){ DataBase = DB; } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.pagina2); btn = (Button) findViewById(R.id.btn2); data = (EditText) findViewById(R.id.Data); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { data.setText(DataBase.removeDado()); } }); } }
Stack (BancodeDados)
public class BancodeDados { elemento primeiro; elemento ultimo; public void InserirDado(String x) { elemento novodadoinicio = new elemento(); novodadoinicio.dado = x; novodadoinicio.proximo = primeiro; if(primeiro==null){ ultimo = novodadoinicio; } primeiro = novodadoinicio; } public void InsereFinal(String x){ elemento novodadoultimo = new elemento(); novodadoultimo.dado = x; novodadoultimo.proximo = primeiro; if(ultimo==null){ primeiro = novodadoultimo; } ultimo = novodadoultimo; } public String removeDado(){ String x; x = primeiro.dado; primeiro = primeiro.proximo; return x; } }
Android log
03-28 01:05:01.431 20564-20564/com.project.meuapp2 E/AndroidRuntime: FATAL EXCEPTION: main Process: com.project.meuapp2, PID: 20564
java.lang.NullPointerException: Attempt to read from field 'java.lang.String com.project.meuapp2.elemento.dado' on a null object reference
at com.project.meuapp2.BancodeDados.removeDado(BancodeDados.java:43)
at com.project.meuapp2.pagina2$1.onClick(pagina2.java:30)
at android.view.View.performClick(View.java:5198)
at android.view.View$PerformClick.run(View.java:21147)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Note: I have tried to create a text file in a folder within the android project, but when I call the java functions to create a file and read the file, it does not read much creates, and the Android log does not error