小编mas*_*mic的帖子

使用EditText的新TextInputLayout渲染问题

我正在尝试设置新的support.desing库,为旧的Android版本提供一些棒棒糖视觉效果.

在这种情况下,我正在试图为edittext添加浮动标签,这是通过widget.TextInputLayout完成的:

在此输入图像描述

要做到这一点,我已经按照谷歌提供的一些迹象:

  • 我已经下载了最后一个支持库(22.2.0)并包含在graddle文件中.

    编译'com.android.support:design:22.2.0'

  • 我以这种方式在我的xml中添加了TextInputLayout:

<android.support.design.widget.TextInputLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="30dp"
    android:layout_marginLeft="20dp">

    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ems="12"
        android:hint="hint"
        android:inputType="number"
        android:id="@+id/edt" />
</android.support.design.widget.TextInputLayout>
Run Code Online (Sandbox Code Playgroud)

但Android Studio在布局预览中显示了这一点:

Rendering failed with a known bug. Please try a rebuild.  
The following classes could not be instantiated:
- android.support.design.widget.TextInputLayout (Open Class, Show Exception, Clear Cache)

Exception Details 
java.lang.NoSuchFieldError: TextAppearance
Run Code Online (Sandbox Code Playgroud)

这是我正在使用的风格:

<style name="MaterialTheme.Base" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorPrimary">@color/md_red_500</item>
    <item name="colorPrimaryDark">@color/darkPrimaryColor</item>
    <item name="colorAccent">@color/md_green_500</item>
    <item name="android:textColorPrimary">@color/md_grey_900</item>
    <item name="android:textColorSecondary">@color/md_grey_600</item>
</style>
Run Code Online (Sandbox Code Playgroud)

编辑-

在此输入图像描述

android

5
推荐指数
1
解决办法
1万
查看次数

翻转十六进制字符串

根据这里提出的另一个问题,拆分一个没有空格的十六进制字符串并将其翻转,我在这里更清楚地写出这个新问题.

我有一个这样的Hex字符串:

Hex_string = 2B00FFEC
Run Code Online (Sandbox Code Playgroud)

我需要的是将Hex字符串的顺序更改为从最新字符开始,所以这将是这样的:

Fliped_hex_string = ECFF002B
Run Code Online (Sandbox Code Playgroud)

在另一个问题中,我问了一种使用.split()方法实现此目的的方法.但应该有另一种方式来更好地实现这一目标.

java string android flip

2
推荐指数
3
解决办法
4578
查看次数

将位图保存到应用程序文件夹

当我的应用程序第一次启动时,它让用户选择个人资料图片。这可以通过拍摄照片或从图库中选择来完成。

用户获得图片后,必须将其保存在设备的内部存储中,并将在应用程序中用作用户的个人资料图片。

这个过程工作正常,用户获取图片,并在保存之前显示在图像视图中。但是要将图像保存在内部存储器中,我遇到了一些麻烦。我尝试了几种方法来做到这一点,其中大多数似乎都有效。但是当我尝试它们时,图片没有被保存,或者至少我没有找到保存它的文件夹。

我已经尝试过这3种方式:

第一的:

File directory = getDir("profile", Context.MODE_PRIVATE);
File mypath = new File(directory, "thumbnail.png");

FileOutputStream fos = null;
try {
    fos = new FileOutputStream(mypath);
    mybitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);
    fos.close();
} catch (Exception e) {
    e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)

第二:

ByteArrayOutputStream bytes = new ByteArrayOutputStream();
mybitmap.compress(Bitmap.CompressFormat.PNG, 90, bytes);

FileOutputStream fos = null;
try {
    fos = openFileOutput("thumbnail.png", Context.MODE_PRIVATE);
    fos.write(bytes.toByteArray());
    fos.close();
} catch (FileNotFoundException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)

第三:

ByteArrayOutputStream bytes = new ByteArrayOutputStream();
mybitmap.compress(Bitmap.CompressFormat.PNG, 90, bytes); …
Run Code Online (Sandbox Code Playgroud)

android bitmap

2
推荐指数
1
解决办法
2万
查看次数

拆分没有空格的十六进制字符串并翻转它

我需要像这样分割一个字符串:

String= 0C46BA09
Run Code Online (Sandbox Code Playgroud)

我知道使用StringTokenizer和String.split()方法,我用它们来分隔带空格的字符串.

但是在这种情况下我没有空格来设置条件,所以...我怎么能拆分这个字符串来逐个获取每个字符?

EDITED

这个真正的purpouse是扭转这个十六进制字符串,所以这是0C46BA09为了得到这个09BA460C.

所以,我想知道是否有一种简单的方法,或者split()方法是获得它的唯一方法.

编辑2

最后一个问题的新链接:

翻转十六进制字符串

java string android split

1
推荐指数
2
解决办法
1962
查看次数

实现自定义对话框

我正在实现一个自定义对话框,但在活动中,我遇到了麻烦.这是代码:

public class MainActivity extends Activity {

private Button button;

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

    button = (Button) findViewById(R.id.buttonDialog);

    /*Add button listener*/
    button.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {

            /*Custom dialog*/
            final Dialog dialog = new Dialog(this);
            dialog.setTitle("Cerrar App");
            dialog.setContentView(R.layout.custom_dialog);

        //...
Run Code Online (Sandbox Code Playgroud)

在行中final Dialog dialog = new Dialog(this);它给我一个错误,上面写着:构造函数Dialog(new View.OnClickListener(){})是未定义的.

我做错了什么?

android dialog

0
推荐指数
1
解决办法
96
查看次数

将值从 Activity 传递到自定义 View

我需要将一个值从我的主活动传递到自定义视图。

在主要活动中,我有一个 SensorEventListener,因此我不断地监听光传感器。在 onSensorChanged() 方法中,我读取了该值,并且每次更改到我的自定义视图时都需要发送该值。

我不知道实现此目标的最佳方法是什么。

更新 -

主要活动中引用 SensorEventListener 的方法:

@Override
public void onSensorChanged(SensorEvent event) {
    float lumnes = event.values[0];
    GaugeView.setHandTarget(lumnes);
}
Run Code Online (Sandbox Code Playgroud)

我必须在自定义视图中发送值的方法:

public void setHandTarget(float temperature) {
    if (temperature < minDegrees) {
        temperature = minDegrees;
    } else if (temperature > maxDegrees) {
        temperature = maxDegrees;
    }
    handTarget = temperature;
    handInitialized = true;
    invalidate();
}
Run Code Online (Sandbox Code Playgroud)

我无法使用静态引用,因为我无法调用 invalidate()

android view sensors

0
推荐指数
1
解决办法
4713
查看次数

拆分字符串点分隔

我正在通过移动电话和带有SIM卡的电子设备之间的SMS开发用于M2M通信的应用程序.

当我从移动设备向设备发送命令时,此设备会向具有此结构的移动设备返回确认字符串.

确认没问题:

DEV33456, 15, Date: yy/mm/dd-hh:mm:ss. OK
Run Code Online (Sandbox Code Playgroud)

确认错误:

DEV33456, 15, Date: yy/mm/dd-hh:mm:ss. ERROR
Run Code Online (Sandbox Code Playgroud)

现在,在我的应用程序中,我必须管理此消息以获取相关信息.例如,消息的第一部分是识别码(DEV33456),所以为了得到它,我拆分了消息:

String[] separated = message.split(",");
String ident = separated[0]; //DEV33456
Run Code Online (Sandbox Code Playgroud)

但现在,我需要得到最后一个字(OK或ERROR)来确定消息是否正常.为此,我认为最简单的方法是使用OK或ERROR字之前的点来拆分消息.是整个消息中唯一的一点,所以它应该像这样拆分:

String[] separated = message.split(".");
String unused = separated[0]; //DEV33456, 15, Date: yy/mm/dd-hh:mm:ss
String error = separated[1]; //OK or ERROR
Run Code Online (Sandbox Code Playgroud)

但是它正在抛出ArrayIndexOutOfBoundsException它并且我在第一行之后看到separated字符串数组的长度为2,它的长度为0.

使用"."?拆分字符串有什么问题吗?我已经完成了相同的过程来使用a拆分它","并且它已正确地完成了int.

java string android

0
推荐指数
1
解决办法
68
查看次数

连续播放声音,直到用户停止

我正在开发一个测试应用程序,当自动测试过程结束时,播放警报声以通知操作员.

这个声音是一个3秒的持续时间警报铃声,我需要循环播放,直到用户触摸手机屏幕.

这是我实现媒体播放器的方式:

mp = MediaPlayer.create(MainActivity.this, R.raw.alarm);
    try {
        mp.prepare();
        mp.setLooping(true);
        } catch (IllegalStateException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        mp.start();
    }
Run Code Online (Sandbox Code Playgroud)

我已经定义了mp.setLooping应该使声音连续播放,但事实并非如此.

然后,停止触摸屏幕的声音:

@Override
public boolean onTouchEvent (MotionEvent event) {
    if (event.getAction() == MotionEvent.ACTION_DOWN) {
        /*If sound is playing, stops*/
        if (mp.isPlaying()) {
            mp.stop();
        }
        return true;
    }
    return super.onTouchEvent(event);
}
Run Code Online (Sandbox Code Playgroud)

所以,如果mp.setLooping不能正常工作,我应该如何连续播放声音呢?

android media-player

0
推荐指数
1
解决办法
412
查看次数

两次打开Map Fragment时应用程序崩溃

我正在设计我的应用程序具有向后兼容性,所以我已经实现了支持和设计库,以使用导航抽屉和其他与新的Android版本相关的效果.

导航抽屉管理总共5个片段.其中一个片段包含一张地图:

<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">

    <fragment
        android:id="@+id/map"
        android:layout_width="match_parent"
        android:layout_height="300dp"
        class="com.google.android.gms.maps.MapFragment" />
Run Code Online (Sandbox Code Playgroud)

-

public class LocationFragment extends Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_location, container, false);

        /*Try to obtain the map from the SupportMapFragment*/
        mMap = ((MapFragment) getActivity().getFragmentManager().findFragmentById(R.id.map)).getMap();
Run Code Online (Sandbox Code Playgroud)

这就是我如何从mainActivity上的导航抽屉管理片段:

public class MainActivity extends AppCompatActivity implements DrawerLayout.DrawerListener{

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

        navView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
        @Override public boolean onNavigationItemSelected(MenuItem menuItem) {
            menuItem.setChecked(true);
            displayFragment(menuItem.getItemId());
            drawerLayout.closeDrawers();
            return true;
        } …
Run Code Online (Sandbox Code Playgroud)

android android-maps android-fragments

0
推荐指数
1
解决办法
1501
查看次数