单击按钮时,将创建新的contentView

时间:2012-02-29 03:41:00

标签: android android-button

我正在阅读我正在阅读的书,并尝试将其应用于我想要做的事情。 我有一个按钮设置,是的它可以工作,但是当我点击它时,会显示一个空白屏幕。 这是我的代码:

   public void onCreate(Bundle savedInstanceState) {
        View volButton = findViewById(R.id.volButton);
        volButton.setOnClickListener(this); 
   } 

    public void onClick(View v) {
        Intent i;
        switch (v.getId()) {
           case R.id.volButton:
              i = new Intent(this, VolumeControl.class);
              startActivity(i);
              break;
        }
     }      

音量控制等级

public class VolumeControl extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Toast.makeText(getBaseContext(), "This is the Toast message", Toast.LENGTH_SHORT).show();
    }
}

显示toast窗口,但是显示空白屏幕。

如果我添加setContentView(R.layout.main);在super.onCreate之后,它重新绘制主屏幕。如何在不重绘任何内容的情况下使用此设置?我不希望在我的主类中的switch语句中包含所有代码,它看起来太草率了。

2 个答案:

答案 0 :(得分:0)

这就是你在做的事情:

  1. 我认为你的第一个Activity中缺少一个setContentView,所以我假设你有它在那里
  2. 按下按钮时
  3. 创建新意图
  4. VolumeControl以此意图启动
  5. VolumeControl显示Toast
  6. 然后等待
  7. 因为您没有设置任何布局,所以显示黑屏
  8. 然后,如果你执行setContentLayout(R.layout.main),则会显示与第一个Activity相同的布局,尽管它现在是VolumeControl。 因此,如果要显示不同的内容,请使用不同的布局。

答案 1 :(得分:0)

Activity类负责为您创建一个窗口,您可以在其中使用setContentView(View)放置UI。由于您正在创建一个新的Intent,即VolumeControl,因此您将专注于创建的VolumeControl的“窗口”。如果您希望在单击按钮时显示原始窗口,则在您的Android清单中,更改活动的android主题。

示例:

    <activity
        android:label="@string/app_name"
        android:name=".VolumeControl"
        android:theme="@android:style/Theme.Dialog">
        <intent-filter >
            <action android:name="my.package.NAME" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>