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

Android 单击按钮时,将创建一个新的contentView,android,android-button,Android,Android Button,我在跟随我正在读的书,并试图把它应用到我想做的事情上。 我设置了一个按钮,是的,它可以工作,但当我点击它时,会显示一个空白屏幕。 这是我的密码: public void onCreate(Bundle savedInstanceState) { View volButton = findViewById(R.id.volButton); volButton.setOnClickListener(this); } public void o

我在跟随我正在读的书,并试图把它应用到我想做的事情上。 我设置了一个按钮,是的,它可以工作,但当我点击它时,会显示一个空白屏幕。 这是我的密码:

   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语句中,它看起来太草率了。

这就是你要做的:

  • 我认为您的第一个活动中缺少setContentView,因此我假设您在那里有它
  • 当按下按钮时
  • 一个新的意图产生了
  • VolumeControl就是出于这个目的启动的
  • VolumeControl显示烤面包片
  • 然后等待
  • 因为您没有设置任何布局,所以会显示一个黑屏
  • 然后,如果您设置ContentLayout(R.layout.main),将显示与第一个活动相同的布局,尽管它现在是VolumeControl。
    因此,如果您想显示不同的内容,请使用不同的布局。

    活动类负责为您创建一个窗口,您可以在其中使用setContentView(视图)放置UI。因为您正在创建一个新的意图,即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>
    
    
    
    你想在点击一个按钮时做什么,如果你想在按钮上加载一个新的活动,那么你将得到空白屏幕,因为你没有为音量控制活动设置任何布局。我不知道这是不是坏的,但是我改变了Android:主题=“@ Android:风格/主题。对话”到Android:主题=“@android:style/Theme.NoDisplay”并且它以我想要的方式工作。:)我忘了提到尝试使用不同的主题来实现你想要的。:)所以这样做不是一个坏习惯,也不是编写应用程序的肮脏方式?(特定按钮)