2014-01-12 24 views
1

Pease幫助我處理我的代碼。當點擊按鈕時,setContentView無法工作

當我點擊任何按鈕時,button1,button2或button3會打開新的活動,但佈局是空的,沒有任何文本和其他。

我的新活動的
package com.novator.inweld; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 

public class TentsCatalog extends Activity implements OnClickListener 
{ 
    private Button button1; 
    private Button button2; 
    private Button button3; 

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

     button1 = (Button)findViewById(R.id.button1); 
     button2 = (Button)findViewById(R.id.button2); 
     button3 = (Button)findViewById(R.id.button3); 

     button1.setOnClickListener(this); 
     button2.setOnClickListener(this); 
     button3.setOnClickListener(this); 
    } 

    @Override 
    public void onClick(View view) 
    { 
     if(view == button1) 
     { 
      Intent intent = new Intent(this, TentPage.class); 
      intent.putExtra("tentId", "1"); 
      startActivity(intent); 
     } 

     if(view == button2) 
     { 
      Intent intent = new Intent(this, TentPage.class); 
      intent.putExtra("tentId", "2"); 
      startActivity(intent); 
     } 

     if(view == button3) 
     { 
      Intent intent = new Intent(this, TentPage.class); 
      intent.putExtra("tentId", "3"); 
      startActivity(intent); 
     } 
    } 
} 

代碼:

活動從調用新的活動代碼

package com.novator.inweld; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 

public class TentPage extends Activity 
{ 
    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 

     Intent intent= getIntent(); 
     String tentId = intent.getStringExtra("tentId"); 

     if(tentId == "1") 
     { 
      setContentView(R.layout.tent1); 
     } 

     if(tentId == "2") 
     { 
      setContentView(R.layout.tent2); 
     } 

     if(tentId == "3") 
     { 
      setContentView(R.layout.tent3); 
     } 
    } 

} 

回答

2

使用equals()方法,而不是==

if(tentId.equals("1")) 
0

更換你TentPage like:

package com.novator.inweld; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 

public class TentPage extends Activity 
{ 
    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 

     Intent intent= getIntent(); 
     String tentId = intent.getStringExtra("tentId"); 

     if(tentId.equals("1")) 
     { 
      setContentView(R.layout.tent1); 
     } 

     if(tentId.equals("2")) 
     { 
      setContentView(R.layout.tent2); 
     } 

     if(tentId.equals("3")) 
     { 
      setContentView(R.layout.tent3); 
     } 
    } 

} 
1

Java是AB *%$#CH ...使用equals()

if(tentId.equals("1")) ... 

另外,根據this answer,Android的支持Java 1.7的字符串switch語句中,這意味着你可以在一個整潔重寫代碼時尚:

switch(tendId) { 
    case "1": ... 
    case "2": ... 
    case "3": ... 
} 

請記住,最簡單的解決辦法是通過tendId爲int,而不是一個字符串:

intent.putExtra("tendId", 1); 
int tendId = intent.getIntExtra("tendId"); 
1

變化的onClick法:

@Override 
public void onClick(View v) 
{ 
    Intent intent = new Intent(this, TentPage.class); 
    switch (v.getId()) { 
    case R.id.button1: 
     intent.putExtra("tentId", "1"); 
     startActivity(intent); 
     break; 
    case R.id.button2: 
     intent.putExtra("tentId", "2"); 
     startActivity(intent); 
     break; 
    case R.id.button3: 
     intent.putExtra("tentId", "3"); 
     startActivity(intent); 
     break; 


    default: 
     break; 
    } 

並使用tentId.equals("");對於字符串檢查,您必須使用equals()方法和號碼值使用==像:

if(tentId.equals("1")) 
     { 
      setContentView(R.layout.tent1); 
     } 

     if(tentId.equals("2")) 
     { 
      setContentView(R.layout.tent2); 
     } 

     if(tentId.equals("3")) 
     { 
      setContentView(R.layout.tent3); 
     }