Android hello world app,无法在设备

时间:2015-12-31 12:42:41

标签: java android

这是你好世界的项目。

content_main.xml =>

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    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"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:context="com.example.user.myapplication.MainActivity"
    tools:showIn="@layout/activity_main">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!" />
</RelativeLayout>

MainActivity.java =&GT;

package com.example.user.myapplication;

import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                        .setAction("Action", null).show();
            }
        });
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}

如果我运行该项目,我会看到黑屏设备。无法看到&#34; Hello World!&#34;该设备上的字符串。为什么是这样?它是Nexus 5 API 23 x86。 截图: enter image description here

从底部的AVD窗口我看到:

模拟器:设备fd:640

HAXM is not working and emulator runs in emulation mode

我该如何解决?

10 个答案:

答案 0 :(得分:2)

您的问题分为两部分:

  

<强> 1。模拟器不工作:HAXM无法运行,模拟器运行   仿真模式

此处已经回答:How to fix: “HAX is not working and emulator runs in emulation mode”。这只是一次搜索。

AND

  

<强> 2。 “Hello!World”没有显示

那是因为您的模拟器根本不运行。 (如果您的代码是理智的) 只需在您的物理设备上运行(我希望您有一个)并查看字符串是否显示。

只是想知道,在这个问题中如此复杂,这个问题值得赏心悦目? :)

答案 1 :(得分:1)

如果您在黑色背景上运行它,可以将文字颜色更改为白色。

<TextView
    android:textColor="@android:color/white"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Hello World!" />

答案 2 :(得分:1)

android:textColor="#FFFFFF"

在textView

中添加此行

答案 3 :(得分:1)

您的代码正在执行setContentView到R.layout.activity_main(它似乎有像工具栏和制作工具按钮的东西?!?),而您向我们展示您的hello世界文本的布局是content_main.xml

改变这一点,看看会发生什么:

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

答案 4 :(得分:1)

您的XML布局的名称是什么。它是content_main.xmlactivity_main

如果是content_main.xml,你应该做这样的事情

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

答案 5 :(得分:1)

您使用的是content_main.xml布局,而不是activity_main.xml

应该是:

 setContentView(R.layout.content_main);

答案 6 :(得分:0)

在您的主要活动中过去此代码

public class MainActivity   extends  Activity {

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

}   }

及以下的activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:background="#fff"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
 >
 <TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textColor="#000"
    android:layout_centerInParent="true"
    android:text="Hello World!" />
</RelativeLayout>

答案 7 :(得分:0)

您的模拟器无法正常工作。

  1. 这可能会对您有所帮助。 HAXM is not working and emulator runs in emulation mode

  2. 另一方面你应该知道这一点;

  3.   

    重要:

         

    英特尔HAXM 不能在没有英特尔处理器 的系统上使用,或者英特尔处理器不能用于“硬件要求”中描述的硬件功能< / strong>以上部分。要确定英特尔处理器的功能,请访问http://ark.intel.com/此外,   Intel HAXM仅可用于Intel提供的Android * x86仿真器映像。

         

    Intel HAXM不能与ARM * Android *模拟器映像或非Intel x86 Android *模拟器映像一起使用。 Source

    1. 然后,如果它无法帮助您或您的硬件无法用于HAXM,则可以尝试Genymotion
    2. *我推荐第3名。使用

      ,它比默认RAM更好

答案 8 :(得分:0)

您已创建了&#34;空白活动&#34;来自Android Studio,它为您自动生成了所有这些代码。这里有很多其他答案都是针对实现的(对activity_main.xml与content_main.xml的混淆,或者未使用的fab,等等)。尽管对新手来说有点混乱,但这段代码应该可以正常工作。如果您未在默认代码中更改任何内容,那么它也不太可能是颜色问题。

看起来它与您的模拟器有关。尝试创建一个新的模拟器并运行它。它应该像设备一样运行,独立于您的代码。验证模拟器是否正常工作(或尝试其他模拟器,如Genymotion)。当您知道自己拥有一个好的模拟器时,请尝试再次运行您的代码。 Android Studio应该询问您运行它的设备(真实的或模拟的)。您还可以将设备插入计算机并在真实手机上运行代码以验证其是否有效。

答案 9 :(得分:0)

您使用错误的xml来设置活动 - MainActivity 而不是使用 - setContentView(R.layout.activity_main)setContentView(R.layout.content_main)作为content_main,你的textView小部件中包含一个“Hello World”字符串。

执行此操作后,您可能会在活动中遇到编译错误,因为content_main中没有FAB小部件...所以只需删除fab的代码,然后在显示hello world示例时不需要它!