2016-12-30 1 views
0

그래서 MainActivity2에 textEdit 필드가 있습니다. MainActivity8에 문자열을 전달합니다. 버튼을 클릭하면 MainActivity8로 이동합니다.다른 활동에 문자열을 전달하지 못했습니다.

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

    ((Button) findViewById(R.id.weiter)).setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 


      Intent i = new Intent(MainActivity2.this, MainActivity8.class); 

      EditText et1 = (EditText) findViewById(R.id.editText2); 
      String Link1 = et1.getText().toString(); 

      EditText et = (EditText) findViewById(editText1); 
      String Kat1 = et.getText().toString(); 


      if (Link1.matches("") || Kat1.matches("")){ 
       et.setHintTextColor(RED); 
       et1.setHintTextColor(RED); 
      } 
      else { 
       startActivity(i); 
      } 

      Intent intent = new Intent(MainActivity2.this, MainActivity8.class); 
      intent.putExtra("Kate1", Kat1); 
     } 
    }); 

는 그리고 MainActivity8은 다음과 같습니다

public class MainActivity8 extends AppCompatActivity { 

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

    Intent intent = getIntent(); 
    String Kategorie1 = intent.getExtras().getString("Kategorie1"); 

    TextView tv = (TextView) findViewById(R.id. textView2); 
    tv.setText(Kategorie1); 


} 

}

그래서 매번 내 응용 프로그램이 충돌하는 버튼을 클릭합니다. 그리고 나는 무엇이 잘못되었는지 모릅니다. 나는 안드로이드 모니터에서이 얻을 :

12-30 11 : 45 : 29.046 29591-29591/com.example.luca.myapplication E/AndroidRuntime : 치명적인 예외 : 주요 프로세스 : com.example.luca.myapplication, PID : 29591 java.lang.RuntimeException : 활동을 시작할 수 없습니다. ComponentInfo {com.example.luca.myapplication/com.example.luca.myapplication.MainActivity8} : java.lang.NullPointerException : 가상 메소드 'java.lang .String android.os.Bundle.getString (java.lang.String) 'null 객체 참조에

팁을 줄 수 있습니까?

답변

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

((Button) findViewById(R.id.weiter)).setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     EditText et1 = (EditText) findViewById(R.id.editText2); 
     String Link1 = et1.getText().toString(); 

     EditText et = (EditText) findViewById(editText1); 
     String Kat1 = et.getText().toString(); 


     if (Link1.matches("") || Kat1.matches("")){ 
      et.setHintTextColor(RED); 
      et1.setHintTextColor(RED); 
     } 
     else { 
     Intent intent = new Intent(MainActivity2.this, MainActivity8.class); 
     intent.putExtra("Kate1", Kat1); 
      startActivity(intent); 
     } 


    } 
}); 

및 MainActivity8.class

public class MainActivity8 extends AppCompatActivity { 

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

String Kategorie1 =getIntent().getStringExtra("Kate1"); 

TextView tv = (TextView) findViewById(R.id. textView2); 
tv.setText(Kategorie1); 
} 
} 

전에 내가 의도를 시작하지만 값 의도 "의도"를 넣어 내가 의도에서 추가 가치를 두지.

+0

완벽하게 고마워요! – Luca486

+0

그것을 수락하는 것보다 낫다고 생각되면, –

0
getIntent().getStringExtra("your putString value")); 

이렇게하면됩니다. 먼저에

2

은 다르다 "Kate1"키워드 키 "Kategorie1"을 사용하여

intent.putExtra("Kate1", Kat1); 

하고 가져 오는 데이터를 사용하여 데이터를 전송할 수 있습니다

변화

intent.getExtras().getString("Kategorie1"); 

intent.getExtras().getString("Kate1"); 
+0

로 문자열을 얻으려고 이봐, 난 그것을 변경되었지만 여전히 작동하지 않는 것과 똑같습니다. – Luca486

+0

또한 그는 의도가 'i' :'startActivity (i);'인 활동을 시작하지만'의도 '에 데이터를 넣습니다. –

+0

startActivity 메소드를 확인하십시오. "Intent intent = new Intent (MainActivity2.this, MainActivity8.class); intent.putExtra ("Kate1 ", Kat1);" startActivity (의도) – siddhesh

0

당신의 키는 "Kate1"이고 다른 활동은 "Kategorie1"입니다.

같은 동생을 넣어.

0

체크 널 (null)에는 getString

Bundle bundle= getIntent().getExtras(); 
    if (bundle!= null) { 
    link = bundle.getString("Kate1"); 
    } 
0

실제로 활동을 시작하려는 의도는 해당 의도의 번들에서 보낼 문자열을 추가하지 않는 것입니다. 코드에서

, 당신이 의도를 만드는 그 의도 "난"을 사용하여이

Intent i = new Intent(MainActivity2.this, MainActivity8.class); 

하고 시작하는 활동을 좋아하지만 당신은 그 의도 객체의 캐릭터 라인을 넣어되지 않습니다.

그래서 당신의 적절한 코드가 같은 아래와 같이해야합니다

((Button) findViewById(R.id.weiter)).setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 


       Intent i = new Intent(MainActivity2.this, MainActivity8.class); 

       EditText et1 = (EditText) findViewById(R.id.editText2); 
       String Link1 = et1.getText().toString(); 

       EditText et = (EditText) findViewById(editText1); 
       String Kat1 = et.getText().toString(); 


       if (Link1.matches("") || Kat1.matches("")){ 
        et.setHintTextColor(RED); 
        et1.setHintTextColor(RED); 
       } 
       else { 
        i.putExtra("Kate1",Kat1); 
        startActivity(i); 
       } 

       //remove this intent,as not required 
      } 
     }); 

과 MainActivity8에

는, 같은 키 Kate1

intent.getExtras().getString("Kate1"); 
관련 문제