我正在编写一个从另一个活动启动的活动。如果反复退出并重新启动屏幕,则启动的新活动有时会显示空白屏幕
在从另一个活动启动的活动的onCreate()之后:
@Override
protected void onCreate(Bundle savedInstanceState) {
if (!isTaskRoot()) {
final Intent intent = getIntent();
final String intentAction = intent.getAction();
if (intent.hasCategory(Intent.CATEGORY_LAUNCHER) && intentAction != null && intentAction.equals(Intent.ACTION_MAIN)) {
Log.w("onCreate()", "Main Activity is not the root. Finishing Main Activity instead of launching.");
finish();
return;
}
}
super.onCreate(savedInstanceState);
Log.d("onCreate()", "Calling setContentView()");
setContentView(R.layout.dial_screen);
name = (TextView) findViewById(R.id.name);
number = (TextView) findViewById(R.id.number);
duration = (TextView) findViewById(R.id.duration);
mute = (Button) findViewById(R.id.mute);
end = (ImageButton) findViewById(R.id.end);
}
这里是dial_screen.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:background="@drawable/bg1024_600"
tools:context="com.harman.contacts.CallScreenActivity" >
<TextView
android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="100dp"
android:text="@string/hello_world"
android:textSize="45sp"
android:textColor="@android:color/white" />
<TextView
android:id="@+id/number"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_below="@id/name"
android:layout_marginTop="50dp"
android:text="@string/hello_world"
android:textSize="35sp"
android:textColor="@android:color/white" />
<TextView
android:id="@+id/duration"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_below="@id/number"
android:layout_marginTop="50dp"
android:text="@string/dialling"
android:textSize="35sp"
android:textColor="@android:color/white" />
<LinearLayout
android:id="@+id/buttons"
android:layout_centerHorizontal="true"
android:layout_below="@id/duration"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="80dp">
<Button
android:id="@+id/mute"
android:layout_width="450dp"
android:layout_height="110dp"
android:text="@string/mute"
android:textSize="30sp"
android:textColor="@android:color/white"
android:layout_gravity="bottom"/>
<ImageButton
android:id="@+id/end"
android:layout_width="450dp"
android:layout_height="100dp"
android:layout_marginStart="30dp"
android:background="@drawable/end_call"
android:contentDescription="@string/hello_world"
android:layout_gravity="bottom"/>
</LinearLayout>
每次我在setContentView()之前获取日志(这意味着活动正在正常启动)但有时,即使在获取日志之后,也没有显示布局。 空白屏幕不是每次都会出现,但有时候。知道为什么会这样,以及如何解决它?如果需要进一步的信息,请告诉我。
答案 0 :(得分:0)
你为什么不尝试这样
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d("onCreate()", "Calling setContentView()");
setContentView(R.layout.dial_screen);
if (!isTaskRoot()) {
final Intent intent = getIntent();
final String intentAction = intent.getAction();
if (intent.hasCategory(Intent.CATEGORY_LAUNCHER) && intentAction != null && intentAction.equals(Intent.ACTION_MAIN)) {
Log.w("onCreate()", "Main Activity is not the root. Finishing Main Activity instead of launching.");
finish();
return;
}
}
name = (TextView) findViewById(R.id.name);
number = (TextView) findViewById(R.id.number);
duration = (TextView) findViewById(R.id.duration);
mute = (Button) findViewById(R.id.mute);
end = (ImageButton) findViewById(R.id.end);
}
答案 1 :(得分:0)
仍然不确定出了什么问题,但是当我按下主页时发现这个问题没有发生时,我找到了解决办法。我通过实现onBackPressed()
使返回键的行为与后键相同。希望这个黑客帮助面临类似问题的人:
public void onBackPressed() {
moveTaskToBack(true);
}
这不是解决方案,而是简单的解决方法。我会将这个问题保持开放几天,以便有人提出实际解决方案