2016-12-30 110 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日: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);',但將數據放入'intent'中。 –

+0

檢查你的startActivity方法後它應該在意圖這行後「Intent intent = new Intent(MainActivity2.this,MainActivity8.class); intent.putExtra(」Kate1「,Kat1);」 startActivity(intent) – siddhesh

0

你的密鑰是「Kate1」,並在另一個活動中使用了「Kategorie1」。

把同樣的關鍵兄弟。的getString

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

檢查空你開始我的意圖,但沒有把額外的價值在我的意圖你把價值意向 「意圖」。

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"); 
相關問題