gpt4 book ai didi

Android 应用程序可在模拟器上运行但不能在真实设备上运行

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:03:00 25 4
gpt4 key购买 nike

刚刚编写了这个用于测试的简单应用:一个按钮显示日期和时间,另一个按钮选择并显示随机颜色。它在 Emulator 上运行良好,但当我尝试在真实设备上运行该应用程序时,按钮什么都不做(不起作用)。

谁能帮我理解为什么?

主要 Activity .java:

package yuvallevy.allyouneedapp;

import android.graphics.Color;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import java.util.Date;
import java.util.Random;

public class MainActivity extends AppCompatActivity {

private Button btnShowTime;
private Button btnRandomColor;
private TextView timeText;
private TextView randomColorView;

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

btnRandomColor = (Button) findViewById(R.id.btnRandomColor);
btnShowTime = (Button) findViewById(R.id.btnShowTime);
timeText = (TextView) findViewById(R.id.timeText);
randomColorView = (TextView) findViewById(R.id.randomColorView);

btnShowTime.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String currentDataTimeString = java.text.DateFormat.getDateTimeInstance().format(new Date());
timeText.setText(currentDataTimeString);
}
});

btnRandomColor.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Random rnd = new Random();
int color = Color.argb(255, rnd.nextInt(256), rnd.nextInt(256), rnd.nextInt(256));
randomColorView.setBackgroundColor(color);
}
});
}
}

activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<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">


<Button
android:id="@+id/btnShowTime"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_toLeftOf="@+id/randomColorView"
android:layout_toStartOf="@+id/randomColorView"
android:text="Show Time"
android:textAppearance="?android:attr/textAppearanceLarge" />

<TextView
android:id="@+id/timeText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/btnRandomColor"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_toEndOf="@+id/btnRandomColor"
android:layout_toRightOf="@+id/btnRandomColor" />

<Button
android:id="@+id/btnRandomColor"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@id/btnShowTime"
android:text="Random Color"
android:textAppearance="?android:attr/textAppearanceLarge" />

<TextView
android:id="@+id/randomColorView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/btnRandomColor"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_alignTop="@+id/btnRandomColor"
android:layout_toRightOf="@+id/btnRandomColor" />


</RelativeLayout>

AndoirdManifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="yuvallevy.allyouneedapp" >

<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme" >
<activity android:name=".MainActivity" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

</manifest>

最佳答案

我怀疑这个明显的问题与属性 android:supportsRtl="true" 和您的设备/模拟器的不同 API 级别有关。

来自official doc :

android:supportsRtl

Declares whether your application is willing to support right-to-left (RTL) layouts. If set to true and targetSdkVersion is set to 17 or higher, various RTL APIs will be activated and used by the system so your app can display RTL layouts. If set to false or if targetSdkVersion is set to 16 or lower, the RTL APIs will be ignored or will have no effect and your app will behave the same regardless of the layout direction associated to the user's Locale choice (your layouts will always be left-to-right).

The default value of this attribute is false.

This attribute was added in API level 17.

这可能会导致模拟器和您的设备之间出现不同的行为。

您需要根据标志修复您的布局,或尝试删除此标志

关于Android 应用程序可在模拟器上运行但不能在真实设备上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33248152/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com