2013-11-09 97 views
0

我正在爲android的tic tac toe應用程序工作。在雙方球員部分,我創建了一個活動,要求兩位球員輸入他們的名字。爲此,我使用了兩個EditTexts。問題在於我的應用程序部隊在開始下一個活動時關閉。這裏是我的代碼:將兩個字符串從一個活動傳遞到另一個

//Activity 1: 
    EditText player1field,player2field; 
    Button startbutton; 
    Intent startbuttonintent; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.single_options); 
    setupActionBar(); 
    player1field = (EditText) findViewById(R.id.player1field); 
    player2field = (EditText) findViewById(R.id.player2field); 
    startbuttonintent = new Intent(this, Activity2.class); 
    startbutton.setOnClickListener(new View.OnClickListener() 
    { 
     @Override 
     public void onClick(View v) { 

      String player1name = player1field.getText().toString(); 
      String player2name = player2field.getText().toString(); 
      startbuttonintent.putExtra("PLAYER1NAME",player1name); 
      startbuttonintent.putExtra("PLAYER2NAME",player2name); 
      startActivity(startbuttonintent); 
     } 
    }); 
} 

這是活動2

//Activity2 
Intent startbuttonintent = getIntent(); 
TextView p1name,p2name; 
    public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_3m); 

    String player1name = startbuttonintent.getStringExtra("PLAYER1NAME"); 
    String player2name = startbuttonintent.getStringExtra("PLAYER2NAME"); 
    p1name = (TextView) findViewById(R.id.p1name); 
    p2name = (TextView) findViewById(R.id.p2name); 
    p1name.setText(player1name); 
    p2name.setText(player2name); 
} 

這個代碼不給我任何錯誤,但是當我運行我的應用程序強制關閉。 請幫幫我。 在此先感謝。

+0

使用putExtra to Intent – KOTIOS

+0

爲什麼不能通過HashMap或Array –

+0

@ MT8我沒有得到你。 –

回答

3

試試這個:

活動1:

EditText player1field,player2field; 
    Button startbutton; 
    Intent startbuttonintent; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.single_options); 
    setupActionBar(); 
    player1field = (EditText) findViewById(R.id.player1field); 
    player2field = (EditText) findViewById(R.id.player2field);   
    startbutton.setOnClickListener(new View.OnClickListener() 
    { 
     @Override 
     public void onClick(View v) { 

      String player1name = player1field.getText().toString(); 
      String player2name = player2field.getText().toString(); 
      startbuttonintent = new Intent(this, Activity2.class); 
      startbuttonintent.putExtra("PLAYER1NAME",player1name); 
      startbuttonintent.putExtra("PLAYER2NAME",player2name); 
      startActivity(startbuttonintent); 
     } 
    }); 
} 

你有的onclick這是造成錯誤之前調用此方法。

並獲取意圖文字是這樣的:你onCreate()方法

getIntent()

//活性2

TextView p1name,p2name; 
    public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_3m); 
    Bundle extras = getIntent().getExtras(); 
    String player1name = extras.getString("PLAYER1NAME"); 
    String player2name = extras.getString("PLAYER2NAME"); 
    p1name = (TextView) findViewById(R.id.p1name); 
    p2name = (TextView) findViewById(R.id.p2name); 
    p1name.setText(player1name); 
    p2name.setText(player2name); 
} 
+0

非常感謝!你的活動2解決方案工作! –

0
String intArray[] = {"one","two"}; 
Intent in = new Intent(this, B.class); 
in.putExtra("my_array", intArray); 
startActivity(in); 

對於閱讀:

Bundle extras = getIntent().getExtras(); 
String[] arrayInB = extras.getStringArray("my_array"); 
0

採取YOUT getIntent方法內onCreate方法

//活性2

TextView p1name,p2name; 
    public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_3m); 
    Intent startbuttonintent = getIntent(); 

    String player1name = startbuttonintent.getStringExtra("PLAYER1NAME"); 
    String player2name = startbuttonintent.getStringExtra("PLAYER2NAME"); 
    p1name = (TextView) findViewById(R.id.p1name); 
    p2name = (TextView) findViewById(R.id.p2name); 
    p1name.setText(player1name); 
    p2name.setText(player2name); 
} 
0

移動Intent startbuttonintent = getIntent();到是Activity的方法,這樣你就可以」 t在靜態類級別初始化中調用它。你必須把它只有在你的Activity對象是準備好了,就像當onCreate()方法

0

@Chinmay狄布開步請使用

startbutton = (Button)findviewbyId(R.id.startbutton); 
+0

是的,我已經做到了。忘了在我的問題中添加它。 –

+0

可否請您提供日誌獲取打印,而其力量關閉 – GOLDEE

+0

感謝您的支持!但我得到了它的工作。 –

0

試一試獲得按鈕「startbutton」

的id ....在Activity1

Bundle bundle = new Bundle(); 
bundle .putString("PLAYER1NAME",player1name); 
bundle .putString("PLAYER2NAME",player2name); 
intent1.putExtras(bundle); 

Activity2

Bundle b = getArguments(); 
String player1name = b.getString("PLAYER1NAME"); 
String player2name = b.getString("PLAYER2NAME"); 
+0

非常感謝!你的activity1解決方案工作。 –

+0

您的歡迎...很高興知道... –

+0

它不工作,只是返回空值 – AlwaysConfused

相關問題