MainActivityからNextActivityにintentにより画面遷移させようとしています。
main_activity.xmlはbuttonというid名のボタンを保持しています。
mainActivityのbuttonの状態を見るButtonListenerクラスを作成し、これをsetOnClickListnerしています。
この時MainActivityのgetApplicationContext()をintentのコンストラクタに渡し、startActivity(intent)しているのですが、startActivityでNullPointExceptionで止まってしまいます。
外のクラスからintentで画面遷移させることはできないのでしょうか?
(エラーログ)
NullPointerException: Attempt to invoke virtual method 'android.app.ActivityThread$ApplicationThread android.app.ActivityThread.getApplicationThread()' on a null object reference
at android.app.Activity.startActivityForResult(Activity.java:4488)
at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:767)
at android.app.Activity.startActivityForResult(Activity.java:4445)
java
1public class MainActivity extends AppCompatActivity { 2 private static Context context; 3 @Override 4 protected void onCreate(Bundle savedInstanceState) { 5 super.onCreate(savedInstanceState); 6 setContentView(R.layout.activity_main); 7 context = getApplicationContext(); 8 View button = findViewById(R.id.button); 9 10 ButtonListener listener = new ButtonListener(); 11 button.setOnClickListener(listener); 12 } 13 14 public static Context getAppContext() { 15 return context; 16 } 17}
java
1public class ButtonListener extends AppCompatActivity implements View.OnClickListener { 2 @Override 3 public void onClick(View view){ 4 View v = view.getRootView(); 5 EditText editName = (EditText)v.findViewById(R.id.editTextName); 6 String strName = editName.getText().toString(); 7 EditText editEmail = (EditText)v.findViewById(R.id.editTextAddress); 8 String strEmail = editEmail.getText().toString(); 9 Context context = MainActivity.getAppContext(); 10 Intent intent = new Intent(context, NextActivity.class); 11 intent.putExtra("name",strName); 12 intent.putExtra("email",strEmail); 13 startActivity(intent); 14 } 15}
java
1public class NextActivity extends AppCompatActivity { 2 @Override 3 protected void onCreate(Bundle savedInstanceState) { 4 super.onCreate(savedInstanceState); 5 setContentView(R.layout.activity_next); 6 Intent intent = getIntent(); 7 String name = intent.getStringExtra("name"); 8 String email = intent.getStringExtra("email"); 9 if(name != null && ! name.isEmpty() && email != null && ! email.isEmpty()){ 10 ((TextView)findViewById(R.id.nameTextView)).setText(name); 11 ((TextView)findViewById(R.id.emailTextView)).setText(email); 12 } 13 } 14}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/13 13:49
2020/02/13 15:38
2020/02/14 15:38