Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/179.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 为什么我当前的应用程序中没有界面?_Android - Fatal编程技术网

Android 为什么我当前的应用程序中没有界面?

Android 为什么我当前的应用程序中没有界面?,android,Android,目前,我正在尝试用Android Studio编写一些应用程序。我想创建一个应用程序,向我显示加速度计的值。所以我看了一些Youtube视频,得到了正确的值。但现在我想在我的手机屏幕上显示它们。我创建了一个界面,但我手机上的应用程序没有显示它。此外,当我尝试在MainActivity中使用我的界面时,会出现一条错误消息 如果我注释掉加速度计的所有代码,就不会有任何错误,布局也会显示正确 package com.example.bwki_test_accelometer; import andr

目前,我正在尝试用Android Studio编写一些应用程序。我想创建一个应用程序,向我显示加速度计的值。所以我看了一些Youtube视频,得到了正确的值。但现在我想在我的手机屏幕上显示它们。我创建了一个界面,但我手机上的应用程序没有显示它。此外,当我尝试在MainActivity中使用我的界面时,会出现一条错误消息

如果我注释掉加速度计的所有代码,就不会有任何错误,布局也会显示正确

package com.example.bwki_test_accelometer;

import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity implements SensorEventListener {

    private static final String TAG = "MainActivity";
    private android.hardware.SensorManager sensorManager;
    private Sensor accelerometer;

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

        Log.d(TAG, "onCreate: Initialzing Sensor Services");
        sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
        accelerometer = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
        if (accelerometer== null){
            Toast.makeText(this, "Der Sensor ist nicht verfügbar!", Toast.LENGTH_SHORT).show();
            finish();
        }
        sensorManager.registerListener(MainActivity.this, accelerometer, SensorManager.SENSOR_DELAY_NORMAL );
        Log.d(TAG, "onCreate: Regoster accelerometer listener");

    }

    @Override
    public void onSensorChanged(SensorEvent event) {
        Log.d(TAG, "onSensorChanged:X:" + event.values[0] + "    Y: " +   event.values[1] + "   Z:   " + event.values[2]);

        /*
        EditText XAchse=(EditText)findViewById(R.id.XAchse);
        XAchse.setText((int) event.values[0]);

        EditText YAchse=(EditText)findViewById(R.id.YAchse);
        YAchse.setText((int) event.values[1]);

        EditText ZAchse=(EditText)findViewById(R.id.ZAchse);
        ZAchse.setText((int) event.values[2]);

        */
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

    @Override
    public void onAccuracyChanged(Sensor sensor, int accuracy) {

    }}

如果从onSensorChanged(…)中删除Thread.sleep(…)是否有效?我认为onSensorChanged(…)的调用相对频繁,这可能会防止应用程序发生任何其他情况


安卓对其“线程”上的长时间运行任务并不十分兴奋。您应该在自己的工作线程中运行该线程。

如果删除该线程,该线程是否有效。从onSensorChanged(…)中删除sleep(…)?我认为onSensorChanged(…)的调用相对频繁,这可能会防止应用程序发生任何其他情况


安卓对其“线程”上的长时间运行任务并不十分兴奋。您应该在自己的工作线程中运行它。

代码有两个问题:将文本设置为强制转换整数和在线程上休眠。首先,使用
Thread.sleep()
,删除整个
try…catch
块,因为它会导致问题,您实际上不需要在那里暂停1秒。第二,不要将加速计值强制转换为int,只需显示其原始浮点值(
setText()
要求资源ID为整数)。注释掉的块可能如下所示(您需要在相应的布局文件中将EditText替换为TextView):


我在一个快速示例应用程序中测试了它,它工作正常。

代码有两个问题:将文本设置为强制转换整数和在线程上休眠。首先,使用
Thread.sleep()
,删除整个
try…catch
块,因为它会导致问题,您实际上不需要在那里暂停1秒。第二,不要将加速计值强制转换为int,只需显示其原始浮点值(
setText()
要求资源ID为整数)。注释掉的块可能如下所示(您需要在相应的布局文件中将EditText替换为TextView):

我在一个快速示例应用程序中测试了它,它工作正常

TextView XAchse= findViewById(R.id.XAchse);
XAchse.setText(String.valueOf(event.values[0]));

TextView YAchse= findViewById(R.id.YAchse);
YAchse.setText(String.valueOf(event.values[1]));

TextView ZAchse= findViewById(R.id.ZAchse);
ZAchse.setText(String.valueOf(event.values[2]));