2014-03-30 248 views
0

我有下面的代碼,點擊ImageButton應該打開一個新的佈局(.xml文件)。在點擊圖片按鈕時開始一個新的佈局

import android.os.Bundle; 
import android.app.Activity; 
import android.view.Menu; 
import android.view.MotionEvent; 
import android.view.View; 
import android.view.View.OnTouchListener; 
import android.widget.ImageButton; 
import android.view.View.OnClickListener; 

public class MainActivity extends Activity { 

@Override 
protected void onCreate(final Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    ImageButton img = (ImageButton) findViewById(R.id.imageView1); 
    img.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View view) { 
      // TODO Auto-generated method stub 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.board_play); 
     } 
    }); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 

} 

但我在onClick方法中出現錯誤。幫助我可以更改以消除錯誤。我是否使用正確的實現來改變使用ImageButton的佈局?

+2

刪除super.onCreate(savedInstanceState);來自onClick – AnswerBot

+0

@AnswerBot謝謝。它清除了錯誤 – nomorequestions

回答

2

將不同的佈局設置爲相同的活動是糟糕的設計。每個活動都有一個生命週期,並且應該只爲活動設置一個佈局。

改爲開始新的活動並將board_play設置爲相同。

使用

@Override 
    public void onClick(View view) { 
     startActivity(new Intent(MainActivity.this,BoardActivity.class)); 
    } 

在BoardActivity

public class BoardActivity extends Activity 
{ 
    @Override 
    protected void onCreate(final Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.board_play); 
} 

確保您在清單文件BoarActivity的條目。

您也可以使用片段。

1

我將使用多個線性佈局或/和任何您想要的容器,控制可見性屬性而不是setContentView

1

創建一個新的Class 例如MainActivity2.java

public class MainActivity2 extends Activity { 

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

} 

在你AndroidManifest.xml中不要忘記添加

<activity android:name=".MainActivity2" 
        android:label="@string/app_name"> 

現在您的代碼應該是這樣的:

public class MainActivity extends Activity { 

@Override 
protected void onCreate(final Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    ImageButton img = (ImageButton) findViewById(R.id.imageView1); 
    img.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View view) { 
      // TODO Auto-generated method stub 
      Intent i = new Intent(MainActivity.this,MainActivity2.class); 
      startActivity(i); 
     } 
    }); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 

} 
相關問題