2016-03-31 16 views
-4

私は基本的に別のアクティビティから情報を取得しようとしています。したがって、私は活動を呼び出す必要があります。私が使う;コールメソッド - Androidスタジオ

Adduser adduser = new AddUser(); 

ただし、追加すると強制終了しますか?何か案は?

MainActivity;

public class MainActivity extends AppCompatActivity{ 

//AddUser adduser = new AddUser(); // HERE 

    // private Realm realm; 
    // private RealmConfiguration realmConfig; 
Button btnadd; 
ListView listuser; 
ArrayList<String> list = new ArrayList<String>(); 
ArrayAdapter<String> adapter; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    //overridePendingTransition(R.anim.abc_fade_in, R.anim.abc_fade_out); 
    setContentView(R.layout.activity_main); 
    // RealmConfiguration config = new RealmConfiguration.Builder(this).build(); 
    // Realm.setDefaultConfiguration(config); 
    //getNames(); 

    //Add User Button 
    btnadd = (Button) findViewById(R.id.btnAdd); 
    listuser = (ListView) findViewById(R.id.listUser); 
    // adduser.txtName = (EditText) findViewById(R.id.txtName); 
    adapter =new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, android.R.id.text1, list); 
    listuser.setAdapter(adapter); 

    //Button Event 
    btnadd.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if (v == btnadd) { 
       Intent addUser = new Intent(getApplicationContext(), AddUser.class); 
       startActivityForResult(addUser,1); 
      } 
     } 
    }); 
} 
/*void getNames() 
{ 
    list.add(adduser.txtName.getText().toString()); 
}*/ 
@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == 1 && resultCode == RESULT_OK && data != null) { 
     adapter.add(data.getStringExtra("name")); 
     adapter.notifyDataSetChanged(); 
    } 
} 
} 

は、AddUser:

public class AddUser extends AppCompatActivity { 
Button btnback, btnsave; 
EditText txtName, txtEmail, txtPhone, txtAddress; 
String n1; 
int no1; 
Realm realm1; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.adduser); 
    // Realm realm = Realm.getInstance(this); 
    //EditText 
    txtName=(EditText)findViewById(R.id.txtName); 
    txtEmail=(EditText)findViewById(R.id.txtEmail); 
    txtPhone=(EditText)findViewById(R.id.txtPhone); 
    txtAddress=(EditText)findViewById(R.id.txtAddress); 
    //Button 
    btnback =(Button) findViewById(R.id.btnBack); 
    btnsave = (Button)findViewById(R.id.btnSave); 
    //Button Event 
    btnback.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if(v == btnback){ 
       Intent main = new Intent(getApplicationContext(), MainActivity.class); 
       startActivity(main); 
      } 
     } 
    }); 

    btnsave.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if (v == btnsave) { 

       Intent result = new Intent(); 
       result.putExtra("name",txtName.getText().toString()); 
       setResult(RESULT_OK, result); 

       Log.v("Name", txtName.getText().toString()); 
       Log.v("Email", txtEmail.getText().toString()); 
       Log.v("Phone", txtPhone.getText().toString()); 
       Log.v("Address", txtAddress.getText().toString()); 
//main.list.add(txtName.getText().toString()); 
       //UPDATE 
       /*realm1.beginTransaction(); 
       //Saves the input data 
       User user = realm1.createObject(User.class); 
       user.setName(txtName.getText().toString()); 
       user.setAddress(txtAddress.getText().toString()); 
       user.setEmail(txtEmail.getText().toString()); 
       n1 = txtPhone.getText().toString(); 
       no1 = Integer.parseInt(n1); 
       //COMMIT 
       realm1.commitTransaction(); 
       */ 
       Toast.makeText(AddUser.this, "User has been added.", Toast.LENGTH_LONG).show(); 

       //Start Activity 
       Intent save = new Intent(getApplicationContext(), MainActivity.class); 
       startActivity(save); 

      } 
     } 
    }); 
} 

} 

LOG:私はこれを気づいた

03-31 09:38:26.030 2831-2831/? E/AndroidRuntime: FATAL EXCEPTION: main 
              Process: com.example.scott.addressbook, PID: 2831 
              java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.scott.addressbook/com.example.scott.addressbook.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.text.Editable android.widget.EditText.getText()' on a null object reference 
               at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298) 
               at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360) 
               at android.app.ActivityThread.access$800(ActivityThread.java:144) 
               at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278) 
               at android.os.Handler.dispatchMessage(Handler.java:102) 
               at android.os.Looper.loop(Looper.java:135) 
               at android.app.ActivityThread.main(ActivityThread.java:5221) 
               at java.lang.reflect.Method.invoke(Native Method) 
               at java.lang.reflect.Method.invoke(Method.java:372) 
               at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) 
               at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 
               Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.text.Editable android.widget.EditText.getText()' on a null object reference 
               at com.example.scott.addressbook.MainActivity.getNames(MainActivity.java:51) 
               at com.example.scott.addressbook.MainActivity.onCreate(MainActivity.java:30) 
               at android.app.Activity.performCreate(Activity.java:5937) 
               at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105) 
               at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251) 
               at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)  
               at android.app.ActivityThread.access$800(ActivityThread.java:144)  
               at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)  
               at android.os.Handler.dispatchMessage(Handler.java:102)  
               at android.os.Looper.loop(Looper.java:135)  
               at android.app.ActivityThread.main(ActivityThread.java:5221)  
               at java.lang.reflect.Method.invoke(Native Method)  
               at java.lang.reflect.Method.invoke(Method.java:372)  
               at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)  
               at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)  
03-31 09:38:26.060 941-941/? E/EGL_emulation: tid 941: eglCreateSyncKHR(1237): error 0x3004 (EGL_BAD_ATTRIBUTE) 

:仮想メソッド「アンドロイドを起動しようとすると:java.lang.NullPointerExceptionが:によって引き起こさ
。 nullオブジェクト参照でtext.Editable android.widget.EditText.getText() 'を編集

Nullオブジェクトですか?

私はGoogleを検索しましたが、誰もがそれを行う方法だと言っていますか?少し単純な笑に少し混乱。前もって感謝します!

+1

logcat出力、特にクラッシュからのスタックトレースを投稿できますか? – GHC

+0

AddUserとは? – Blackbelt

+0

今すぐログを取得します - そして、私は基本的に 'アドレス帳'を作っています。ユーザーの入力(名前)を表示してから、それをリストビューに表示します。 AddUserは、ユーザーが名前を入力できるクラスです。 –

答えて

0

AddUserからユーザーの入力を受け取りたいと思うようです。

まず、ボタンのOnClickListenerに、startActivityの代わりstartActivityForResultを使用:

btnadd.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     if (v == btnadd) { 
      Intent addUser = new Intent(getApplicationContext(), AddUser.class); 
      startActivityForResult(addUser, 1/* It can be any number you want*/); 
     } 
    } 
}); 

を次にAddUserユーザが入力終了したときに、電話で、最後

Intent result = new Intent(); 
result.putExtra("name", txtName.getText().toString()); 
setResult(RESULT_OK, result); 

MainActivityonActivityResultをオーバーライド:

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == 1 && resultCode == RESULT_OK && data != null) { 
     adapter.add(data.getStringExtra("name")); 
     adapter.notifyDataSetChanged(); 
    } 
} 
+0

ありがとうございました!しかし、リストビューはまだ何も表示されません...私は投稿します'AddUser'は私が持っているコードを表示します。 –

+0

'AddUser'の両方のリスナーで' MainActivity'を再度起動する必要はありません。ちょうど 'finish'を呼び出します。 – shhp

+0

オハイオ州良いおかげで、多くのアクティビティを変更することは簡単!しかし、txtNameはまだMainActivityのリストビューには表示されませんが、アプリケーションを強制終了することはありません –

関連する問題