【问题标题】:Android-some issue with running example code [dimens.xml]Android-一些运行示例代码的问题 [dimens.xml]
【发布时间】:2018-04-12 21:38:36
【问题描述】:

我是 Android Studio 新手,在运行示例代码时遇到了一些问题: 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"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.abdul.moqueet.currency.MainActivity">

<EditText
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:inputType="numberDecimal"
    android:ems="5"
    android:id="@+id/et"
    android:layout_marginTop="33dp"
    android:layout_alignParentTop="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true" />


<Spinner
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/spin"
    android:layout_alignTop="@+id/et"
    android:layout_toRightOf="@+id/et"
    android:layout_toEndOf="@+id/et"
    android:layout_marginLeft="47dp"
    android:layout_marginStart="47dp" />

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/convert"
    android:id="@+id/btn"
    android:layout_marginTop="33dp"
    android:layout_below="@+id/spin"
    android:layout_toRightOf="@+id/et"
    android:layout_toEndOf="@+id/et" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:text="@string/usdtxt"
    android:id="@+id/TextView1"
    android:layout_marginTop="20dp"
    android:layout_below="@+id/btn"
    android:layout_alignLeft="@+id/spin"
    android:layout_alignStart="@+id/spin"
    android:layout_marginLeft="80dp"
    android:layout_marginStart="80dp" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:text="@string/eurtxt"
    android:id="@+id/TextView2"
    android:layout_marginTop="20dp"
    android:layout_below="@+id/TextView1"
    android:layout_alignLeft="@+id/spin"
    android:layout_alignStart="@+id/spin"
    android:layout_marginLeft="80dp"
    android:layout_marginStart="80dp" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:text="@string/inrtxt"
    android:id="@+id/TextView3"
    android:layout_marginTop="20dp"
    android:layout_below="@+id/TextView2"
    android:layout_alignLeft="@+id/spin"
    android:layout_alignStart="@+id/spin"
    android:layout_marginLeft="80dp"
    android:layout_marginStart="80dp" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:text="@string/zero"
    android:id="@+id/usd"
    android:layout_alignTop="@+id/TextView1"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_marginLeft="17dp"
    android:layout_marginStart="17dp" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:text="@string/zero"
    android:id="@+id/euro"
    android:layout_above="@+id/TextView3"
    android:layout_alignLeft="@+id/usd"
    android:layout_alignStart="@+id/usd" />
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:text="@string/zero"
    android:id="@+id/inr"
    android:layout_alignTop="@+id/TextView3"
    android:layout_alignLeft="@+id/euro"
    android:layout_alignStart="@+id/euro" />
    </RelativeLayout>

MainActivity.java

package com.example.adriangranosik.coinconverter;

    import android.os.AsyncTask;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.AdapterView;
    import android.widget.ArrayAdapter;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.Spinner;
    import android.widget.TextView;

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;

    import org.apache.http.HttpEntity;
    import org.apache.http.HttpResponse;
    import org.apache.http.client.ClientProtocolException;
    import org.apache.http.client.HttpClient;
    import org.apache.http.client.methods.HttpGet;
    import org.apache.http.impl.client.DefaultHttpClient;
    import org.json.JSONArray;
    import org.json.JSONException;
    import org.json.JSONObject;

    public class MainActivity extends AppCompatActivity {

        private EditText et;
        private TextView usd, euro, inr;
        private Button btn;
        private Spinner spin;
        private int index = 0;
        private double inputvalue;
        private String result[] = new String[10];

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            et = (EditText) findViewById(R.id.et);
            usd = (TextView) findViewById(R.id.usd);
            euro = (TextView) findViewById(R.id.euro);
            inr = (TextView) findViewById(R.id.inr);
            btn = (Button) findViewById(R.id.btn);
            spin = (Spinner) findViewById(R.id.spin);

            ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.currency, android.R.layout.simple_spinner_item);
            adapter.setDropDownViewResource(android.R.layout.select_dialog_singlechoice);
            spin.setAdapter(adapter);

            spin.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                @Override
                public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                    index = position;
                }

                @Override
                public void onNothingSelected(AdapterView<?> parent) {

                }
            });

            btn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    usd.setText("wait...");
                    euro.setText("wait...");
                    inr.setText("wait...");

                    if (et.getText().toString().trim().length() > 0 && !et.getText().toString().trim().equals(".")) {
                        String textValue = et.getText().toString();
                        inputvalue = Double.parseDouble(textValue);

                        new calculate().execute();
                    }
                }
            });
        }

        public class calculate extends AsyncTask<String, String, String[]> {
            @Override
            protected void onPreExecute() {
                super.onPreExecute();
            }

            @Override
            protected String[] doInBackground(String... params) {
                if (index == 0) {
                    String uRl;
                    try {
                        uRl = getJson("http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.xchange%20where%20pair%20in%20(%22USDEUR,USDINR%22)&format=json&env=store://datatables.org/alltableswithkeys");
                        JSONObject USDtojObj;
                        USDtojObj = new JSONObject(uRl);

                        JSONArray rateArray = USDtojObj.getJSONObject("query").getJSONObject("results").getJSONArray("rate");
                        result[0] = rateArray.getJSONObject(0).getString("Rate");
                        result[1] = rateArray.getJSONObject(1).getString("Rate");
                    } catch (IOException e) {
                        e.printStackTrace();
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                } else if (index == 1) {
                    String uRl;
                    try {
                        uRl = getJson("http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.xchange%20where%20pair%20in%20(%22EURUSD,EURINR%22)&format=json&env=store://datatables.org/alltableswithkeys");
                        JSONObject EurotojObj;
                        EurotojObj = new JSONObject(uRl);

                        JSONArray rateArray = EurotojObj.getJSONObject("query").getJSONObject("results").getJSONArray("rate");
                        result[0] = rateArray.getJSONObject(0).getString("Rate");
                        result[1] = rateArray.getJSONObject(1).getString("Rate");
                    } catch (IOException e) {
                        e.printStackTrace();
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                } else if (index == 2) {
                    String uRl;
                    try {
                        uRl = getJson("http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.xchange%20where%20pair%20in%20(%22INRUSD,INREUR%22)&format=json&env=store://datatables.org/alltableswithkeys");
                        JSONObject INRtojObj;
                        INRtojObj = new JSONObject(uRl);

                        JSONArray rateArray = INRtojObj.getJSONObject("query").getJSONObject("results").getJSONArray("rate");
                        result[0] = rateArray.getJSONObject(0).getString("Rate");
                        result[1] = rateArray.getJSONObject(1).getString("Rate");
                    } catch (IOException e) {
                        e.printStackTrace();
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
                return result;
            }

            @Override
            protected void onPostExecute(String[] strings) {
                if(index == 0){
                    double usdtoeuroval, usdtoinrval, usdtoeuroinp, usdtoinrinp, usdtousdinp;
                    usdtousdinp = inputvalue * 1;
                    usd.setText(""+usdtousdinp);

                    usdtoeuroval = Double.parseDouble(result[0]);
                    usdtoeuroinp = inputvalue * usdtoeuroval;
                    euro.setText(""+usdtoeuroinp);

                    usdtoinrval = Double.parseDouble(result[1]);
                    usdtoinrinp = inputvalue * usdtoinrval;
                    inr.setText(""+usdtoinrinp);
                }else if(index == 1){
                    double eurotousdval, eurotoinrval, eurotousdinp, eurotoinrinp, eurotoeuroinp;
                    eurotoeuroinp = inputvalue * 1;
                    euro.setText(""+eurotoeuroinp);

                    eurotousdval = Double.parseDouble(result[0]);
                    eurotousdinp = inputvalue * eurotousdval;
                    usd.setText(""+eurotousdinp);

                    eurotoinrval = Double.parseDouble(result[1]);
                    eurotoinrinp = inputvalue * eurotoinrval;
                    inr.setText(""+eurotoinrinp);
                }else if(index == 2){
                    double inrtousdval, inrtoeuroval, inrtousdinp, inrtoeuroinp, inrtoinrinp;

                    inrtoinrinp = inputvalue * 1;
                    inr.setText(""+inrtoinrinp);

                    inrtousdval = Double.parseDouble(result[0]);
                    inrtousdinp = inputvalue * inrtousdval;
                    usd.setText(""+inrtousdinp);

                    inrtoeuroval = Double.parseDouble(result[1]);
                    inrtoeuroinp = inputvalue * inrtoeuroval;
                    euro.setText(""+inrtoeuroinp);
                }
            }

            public String getJson(String url) throws ClientProtocolException, IOException {

                StringBuilder build = new StringBuilder();
                HttpClient client = new DefaultHttpClient();
                HttpGet httpGet = new HttpGet(url);
                HttpResponse response = client.execute(httpGet);
                HttpEntity entity = response.getEntity();
                InputStream content = entity.getContent();
                BufferedReader reader = new BufferedReader(new InputStreamReader(content));
                String con;
                while ((con = reader.readLine()) != null) {
                    build.append(con);
                }
                return build.toString();
            }
        }
    }

我收到以下错误:

布局/activity_main.xml
错误:找不到资源dimen/activity_vertical_margin(又名com.example.adriangranosik.coinconverter:dimen/activity_vertical_margin)。 错误:找不到资源dimen/activity_horizo​​ntal_margin(又名com.example.adriangranosik.coinconverter:dimen/activity_horizo​​ntal_margin)。 错误:找不到资源字符串/转换(又名 com.example.adriangranosik.coinconverter:string/convert)。 错误:找不到资源字符串/usdtxt(又名 com.example.adriangranosik.coinconverter:string/usdtxt)。
错误:找不到资源字符串/eurtxt(又名 com.example.adriangranosik.coinconverter:string/eurtxt)。
错误:找不到资源字符串/inrtxt(又名 com.example.adriangranosik.coinconverter:string/inrtxt)。
错误:找不到资源字符串/零(又名 com.example.adriangranosik.coinconverter:string/zero)。
错误:找不到资源字符串/零(又名 com.example.adriangranosik.coinconverter:string/zero)。
错误:找不到资源字符串/零(又名 com.example.adriangranosik.coinconverter:string/zero)。

链接文件资源失败。

我只想运行一个程序来分析源代码。我知道有 dimens.xml 文件丢失,但我不知道该放什么。 我是 Android 开发的新手,所以我找到了示例代码来学习如何创建这样的应用程序。但是当我无法运行它时很难:D

感谢您的帮助。

【问题讨论】:

  • 在 res 目录中制作 dimen.xml 并添加您 dimen ,如果不想制作 dimen ,则在各处删除 dimen 并修复 dimen 硬代码,例如删除此 @dimen/activity_vertical_margin 使用像 @ 这样的硬代码987654326@根据您的需要。
  • 你能添加你的string.xml和dimen.xml吗?
  • 用这个替换你的代码:- JSONObject json= (JSONObject) new JSONTokener(uRl).nextValue(); JSONObject json2 = json.getJSONObject("查询"); String results = (String) json2.get("results");
  • 谢谢,但正如您所见,这会产生空值,所以我无法获得实际汇率:(

标签: java android xml


【解决方案1】:

你可以直接替换这个

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:paddingBottom="8dp" android:paddingLeft="8dp" android:paddingRight="8dp" android:paddingTop="8dp"

(或者如果所有 4 个填充都相等,您可以只设置 android:padding="8dp"

【讨论】:

    【解决方案2】:

    在 res -> Values 中将此代码放入 dimens.xml

    <dimen name="activity_vertical_margin">3dp</dimen>
    

    根据您的 UI 调整 dp。

    【讨论】:

    • 现在程序至少开始了。但是我从雅虎获取数据有一些问题,因为他们可能阻止了它。你知道如何改变吗? uRl = getJson("query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.xchange%20where%20pair%20in%20(%22INRUSD,INREUR%22)&format=json&env=store://datatables.org/alltableswithkeys");
    • 让我检查一下问题
    • 但这不是问题,因为这些链接不再起作用:(
    • @kenik 在您的代码中,它抛出异常 Bcz 存在解析问题。虽然数据即将到来,但您可以通过将代码替换为:- JSONObject json= (JSONObject) new JSONTokener(uRl).nextValue(); JSONObject json2 = json.getJSONObject("查询"); results= (String) json2.get("results");
    • 你能告诉我应该替换哪个部分吗?因为方法 doInBackround 返回字符串数组。在您的代码中,您只有一个字符串。
    【解决方案3】:
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    

    将上面的代码替换为RelativeLayout中的以下行:

    android:paddingBottom="16dp"
    android:paddingLeft="16dp"
    android:paddingRight="16dp"
    android:paddingTop="16dp"
    

    【讨论】:

      猜你喜欢
      • 2017-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-23
      相关资源
      最近更新 更多