2016-12-30 5 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); 


} 

}

。そして私は何が間違っているのか分からない。私はAndroidのモニターからこれを取得:

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

あなたがしている

変更

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

異なるキー "Kategorie1" を使用して

intent.putExtra("Kate1", Kat1); 

とフェッチデータ "Kate1" キーワードを使用してデータを送信します

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

で文字列を取得しようねえ、私はそれを変えたが、それはまだ動作しなかったのと同じことです。 – Luca486

+0

また、彼は 'i':' startActivity(i); 'という意図で活動を開始していますが、' intent'にデータを入れます。 –

+0

あなたのstartActivityメソッドをチェックしてください。この行の目的の後でなければなりません "Intent intent = new Intent(MainActivity2.this、MainActivity8.class); intent.putExtra(" Kate1 "、Kat1);" startActivity(インテント) – siddhesh

0

あなたのキーは "Kate1"で、あなたは "Kategorie1"を使った別のアクティビティで。

同じ鍵兄弟を入れてください。

0

チェックヌルの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"); 
関連する問題