2017-12-15 10 views
-1

저는 프로그래밍에있어 초보자이며 스스로 해결할 수없는 문제에 직면 해 있습니다. 내가 뭘하고, 작성/두 번째 활동에 EditText에 넣어 String과 MainActivity의 ListView에 무언가를 추가합니다. 활동 2의 버튼을 누를 때마다 내 앱이 작동을 멈 춥니 다. 내가 뭘 잘못하고 있는지 모릅니다. 그래서 도움을 많이 받으실 수 있습니다. 내 코드를 게시 할 수 있습니다 :ListView with Button 및 setResult

MainActivity :

public class Activity_2 extends AppCompatActivity { 

EditText etact; 
Button addbtn; 
String eventname; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_2_layout); 

    addbtn = (Button) findViewById(R.id.addbtn); 
    etact = (EditText) findViewById(R.id.etact); 
    if (etact.getText().toString()!= ""){ 
     eventname = etact.getText().toString(); 
    } 

    addbtn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if (eventname == ""){ 
       Toast.makeText(Activity_2.this, 
         "Make Input first", Toast.LENGTH_LONG).show(); 
      } 
      else { 
       Intent intentback = new Intent(Activity_2.this, MainActivity.class); 
       intentback.putExtra("nameEvent", eventname); 
       setResult(RESULT_OK); 
       finish(); 
      } 
     } 
    }); 

} 


} 

편집 : 로그 캣

FATAL 입력, Activity_2에 이름을 나에게 던져 생각

public class MainActivity extends AppCompatActivity { 

EditText et; 
ListView lv; 
ArrayList<String> arrayList; 
ArrayAdapter<String> adapter; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    et = (EditText) findViewById(R.id.et); 
    lv = (ListView) findViewById(R.id.lv); 

    arrayList = new ArrayList<String>(); 
    adapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_expandable_list_item_1, arrayList); 
    lv.setAdapter(adapter); 



    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
    fab.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 

      Intent intent1 = new Intent(MainActivity.this , Activity_2.class); 
      startActivityForResult(intent1, 1);//Throws me into Act2 
     } 
    }); 
} 


public void onActivityResult(int requestCode, int resultCode, Intent intentback){ 
    super.onActivityResult(requestCode, resultCode, intentback); 
    if (requestCode == 1){ 
     if(resultCode == RESULT_OK){ 
      String resultback = intentback.getStringExtra("nameEvent"); 
      arrayList.add(intentback.getStringExtra("nameEvent")); 
      adapter.notifyDataSetChanged(); 
     } 
    } 
} 

} 

예외 : 주 프로세스 : com.example.robert.againagainagaian, PID : 3857 java.lang.RuntimeException : 결과 배달 실패 {com.example.robert.againagainagaian/com.example.robert.againagainagaian.MainActivity}에 대한 ResultInfo {who = null, request = 1, result = -1, data = null} : java.lang .NullPointerException : 가상 메소드를 호출하려고 시도했습니다. null null에 android.content.Intent.getStringExtra (java.lang.String) '객체 참조가 android.app.ActivityThread.deliverResults (ActivityThread.java : 4053) android.app.ActivityThread $ H.handleMessage에서 android.app.ActivityThread.-wrap20에서 android.app.ActivityThread.handleSendResult (ActivityThread.java:4096) (ActivityThread.java) (ActivityThread.java에서 : 1516) android.os.Handler.dis patchMessage (Handler.java:102) at android.os.Looper.loop (Looper.java:154) at android.app.ActivityThread.main (ActivityThread.java:6077) at java.lang.reflect.Method. (Native Method) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:866) at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:756)에서 을 발생 시켰습니다. : java.lang.NullPointerException : 가상 메소드를 호출하려고 시도했습니다. 'null의 경우 android.content.Intent.getStringExtra (java.lang.String)'객체 참조가 인 경우 com.example.robert.againagainagaian .MainActivity.onActivityResult (MainActivity.java:55) android.app.Activity.dispatchActivityResult ( android.app.ActivityThread.handleSendResult (ActivityThread.java:4096에서 android.app.ActivityThread.deliverResults (ActivityThread.java:4049)) android.app.ActivityThread.-wrap20에서 에서 Activity.java:6915) (ActivityThread .java) at android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1516) at android.os.Handler.dispatchMessage (Handler.java:102) at android.os.Looper.loop (Looper.java) : 154) at android.app.ActivityThread.main (ActivityThread.java:6077) at java.lang.reflect.Method.invoke (Native Method) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ActivityThread.java : ZygoteInit.java:866) at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:866)자바 : 널 (null)에 대한 756)

+0

쇼 로그 캣처럼 SecondActivity에서 의도에서 onActivityResult

public void onActivityResult(int requestCode, int resultCode, Intent intentback){ super.onActivityResult(requestCode, resultCode, intentback); if (requestCode == 1){ if(resultCode == RESULT_OK && intentback.getData()!=null){ String resultback = intentback.getStringExtra("nameEvent"); arrayList.add(intentback.getStringExtra("nameEvent")); adapter.notifyDataSetChanged(); } } } 

설정 결과 데이터에 액세스하는 동안하시기 바랍니다. –

+0

'(eventname == "")'wrong..it이'if (eventname.equals (""))' –

+0

이어야합니다. 편집 : MainActivity의 EditText를 무시하면됩니다. 감사합니다 – ForeverNewbie

답변

0

확인이

if (!("").equals(etact.getText().toString())){ 
     eventname = etact.getText().toString(); 
    } 

    addbtn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if (("").equals(eventname)){ 
       Toast.makeText(Activity_2.this, 
         "Make Input first", Toast.LENGTH_LONG).show(); 
      } 

      else { 
       Intent intentback = new Intent(); 
       intentback.putExtra("nameEvent", eventname); 
       setResult(RESULT_OK, intent); 
       finish(); 
      } 
+0

가 변경된 후에도 계속 작동하지 않습니다./ – ForeverNewbie

+0

@ForeverNewbie, 업데이트 된 답변을 확인하십시오. –

+0

이제 앱이 충돌하지 않습니다! 하지만 아무것도 내 Listview tho에 추가됩니다 .. – ForeverNewbie