2017-09-28 9 views
0

android 용 계산기 프로그램을 만드는 중이고 프로그램을 작성하는 데 필요한 모든 버튼이있는 xml 파일이 있습니다. 그것은 안드로이드 스튜디오의 디자인 부분에 나타나지만, 안드로이드 폰 (에뮬레이터가 아닌 내 PC에서 너무 느리게 실행 됨)에서 내 앱을 실행하려고 할 때 충돌이 발생합니다. 이유도 모르겠다. setContentView (R.layout.activity_main)로 인해 응용 프로그램이 손상됩니다.

내 XML 파일입니다

<?xml version="1.0" encoding="utf-8"?> 
<layout> 
    <GridLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:tools="http://schemas.android.com/tools" 
     android:id="@+id/activity_main" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:columnCount="4" 
     android:rowCount="7" 
     tools:context="com.example.pvtboromeo.calc.MainActivity"> 

     <EditText 
      android:id="@+id/editText" 
      android:background="@android:color/black" 
      android:textColor="#FFFFFF" 
      android:layout_row="0" 
      android:layout_column="0" 
      android:layout_columnSpan="4" 
      android:layout_rowSpan="2" 
      android:layout_rowWeight="2" 
      android:layout_columnWeight="4" 
      android:enabled="false" 
      android:gravity="bottom|right" 
      android:paddingRight="15sp" 
      android:paddingBottom="15sp" 
      android:textAlignment="gravity" 
      android:textSize="40sp"/> 

     <Button 
      android:id="@+id/buttonC" 
      android:layout_column="0" 
      android:layout_columnWeight="1" 
      android:layout_row="2" 
      android:layout_rowWeight="1" 
      android:background="@drawable/button_border" 
      android:text="C" 
      android:textSize="20sp" /> 

     <Button 
      android:id="@+id/buttonNegative" 
      android:layout_row="2" 
      android:layout_column="1" 
      android:layout_rowWeight="1" 
      android:layout_columnWeight="1" 
      android:background="@drawable/button_border" 
      android:text="+/-" 
      android:textSize="20sp"/> 

     <Button 
      android:id="@+id/buttonPercent" 
      android:layout_row="2" 
      android:layout_column="2" 
      android:layout_rowWeight="1" 
      android:layout_columnWeight="1" 
      android:background="@drawable/button_border" 
      android:text="%" 
      android:textSize="20sp"/> 

     <Button 
      android:id="@+id/buttonDivide" 
      android:layout_row="2" 
      android:layout_column="3" 
      android:layout_rowWeight="1" 
      android:layout_columnWeight="1" 
      android:background="@drawable/button_border2" 
      android:text="/" 
      android:textSize="20sp"/> 

     <Button 
      android:id="@+id/buttonSeven" 
      android:layout_row="3" 
      android:layout_column="0" 
      android:layout_rowWeight="1" 
      android:layout_columnWeight="1" 
      android:background="@drawable/button_border" 
      android:text="7" 
      android:textSize="20sp" /> 

     <Button 
      android:id="@+id/buttonEight" 
      android:layout_row="3" 
      android:layout_column="1" 
      android:layout_rowWeight="1" 
      android:layout_columnWeight="1" 
      android:background="@drawable/button_border" 
      android:text="8" 
      android:textSize="20sp"/> 

     <Button 
      android:id="@+id/buttonNine" 
      android:layout_row="3" 
      android:layout_column="2" 
      android:layout_rowWeight="1" 
      android:layout_columnWeight="1" 
      android:background="@drawable/button_border" 
      android:text="9" 
      android:textSize="20sp"/> 

     <Button 
      android:id="@+id/buttonMultiply" 
      android:layout_row="3" 
      android:layout_column="3" 
      android:layout_rowWeight="1" 
      android:layout_columnWeight="1" 
      android:background="@drawable/button_border2" 
      android:text="X" 
      android:textSize="20sp"/> 

     <Button 
      android:id="@+id/buttonFour" 
      android:layout_row="4" 
      android:layout_column="0" 
      android:layout_rowWeight="1" 
      android:layout_columnWeight="1" 
      android:background="@drawable/button_border" 
      android:text="4" 
      android:textSize="20sp" /> 

     <Button 
      android:id="@+id/buttonFive" 
      android:layout_row="4" 
      android:layout_column="1" 
      android:layout_rowWeight="1" 
      android:layout_columnWeight="1" 
      android:background="@drawable/button_border" 
      android:text="5" 
      android:textSize="20sp"/> 

     <Button 
      android:id="@+id/buttonSix" 
      android:layout_row="4" 
      android:layout_column="2" 
      android:layout_rowWeight="1" 
      android:layout_columnWeight="1" 
      android:background="@drawable/button_border" 
      android:text="6" 
      android:textSize="20sp"/> 

     <Button 
      android:id="@+id/buttonSubtract" 
      android:layout_row="4" 
      android:layout_column="3" 
      android:layout_rowWeight="1" 
      android:layout_columnWeight="1" 
      android:background="@drawable/button_border2" 
      android:text="-" 
      android:textSize="20sp"/> 

     <Button 
      android:id="@+id/buttonOne" 
      android:layout_row="5" 
      android:layout_column="0" 
      android:layout_rowWeight="1" 
      android:layout_columnWeight="1" 
      android:background="@drawable/button_border" 
      android:text="1" 
      android:textSize="20sp" /> 

     <Button 
      android:id="@+id/buttonTwo" 
      android:layout_row="5" 
      android:layout_column="1" 
      android:layout_rowWeight="1" 
      android:layout_columnWeight="1" 
      android:background="@drawable/button_border" 
      android:text="2" 
      android:textSize="20sp"/> 

     <Button 
      android:id="@+id/buttonThree" 
      android:layout_row="5" 
      android:layout_column="2" 
      android:layout_rowWeight="1" 
      android:layout_columnWeight="1" 
      android:background="@drawable/button_border" 
      android:text="3" 
      android:textSize="20sp"/> 

     <Button 
      android:id="@+id/buttonAdd" 
      android:layout_row="5" 
      android:layout_column="3" 
      android:layout_rowWeight="1" 
      android:layout_columnWeight="1" 
      android:background="@drawable/button_border2" 
      android:text="+" 
      android:textSize="20sp"/> 

     <Button 
      android:id="@+id/buttonZero" 
      android:layout_column="0" 
      android:layout_columnSpan="2" 
      android:layout_columnWeight="2" 
      android:layout_row="6" 
      android:layout_rowWeight="1" 
      android:background="@drawable/button_border" 
      android:text="0" 
      android:textSize="20sp" /> 

     <Button 
      android:id="@+id/buttonDecimal" 
      android:layout_row="6" 
      android:layout_column="2" 
      android:layout_rowWeight="1" 
      android:layout_columnWeight="1" 
      android:background="@drawable/button_border" 
      android:text="." 
      android:textSize="20sp"/> 

     <Button 
      android:id="@+id/buttonEquals" 
      android:layout_row="6" 
      android:layout_column="3" 
      android:layout_rowWeight="1" 
      android:layout_columnWeight="1" 
      android:background="@drawable/button_border2" 
      android:text="=" 
      android:textSize="20sp"/> 

    </GridLayout> 
</layout> 

그리고 이것은 된 setContentView 코드없이 내 자바 파일

package com.example.pvtboromeo.calc; 

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 

public class MainActivity extends AppCompatActivity { 

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

, 내 응용 프로그램 실행하지만, 아무것도 (분명히)가 표시됩니다하지만 지금은 내 응용 프로그램 충돌입니다 내가 그것을 실행하려고 할 때. 오류는 'Unfortunatly, Calc +가 중지되었습니다.'라고 말합니다.

저는 안드로이드 개발에 초보자입니다. 내가 놓친 게 있니? 내 모든 구문이 좋은 것 같습니다.

참고 : android.R 내 패키지 R 대신 가져온 경우 나 또한 확인 만이 아니다 ...

편집 : 그래서 난 그냥 테스트 프로젝트와 주위 엉망했는데 그것이 GridLayout이라는 이유로 앱이 다운되는 것을 알았습니다. 안드로이드 5.1.1 (Lolipop)을 사용하면 도움이되는지 아닌지 확실하지 않습니다. 나는 그것이 api 22라고 믿습니다. 이것을 고칠 수있는 방법이 있습니까?

+0

스택 추적을 추가 할 수 있다면 도움이 될 것입니다. –

+0

실제로 처음과 끝에서 태그를 제거하여이 문제를 해결했습니다. – Vince

답변

0

1) 데이터 바인딩을 사용하도록 응용 프로그램을 구성합니다

이동이 build.gradle (모듈 : 응용 프로그램) 삽입 :

android { 
    .... 
    dataBinding { //line to insert 
    enabled = true //line to insert 
} 

}

1.1) 프로젝트를 synk.

2) 레이아웃 태그에 삽입 :

xmlns:android="http://schemas.android.com/apk/res/android" 

귀하의 XML 코드는 다음과 같이 시작됩니다 :

<?xml version="1.0" encoding="utf-8"?> 
<layout xmlns:android="http://schemas.android.com/apk/res/android"> 
    <GridLayout 
     xmlns:tools="http://schemas.android.com/tools" 
     android:id="@+id/activity_main" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:columnCount="4" 
     android:rowCount="7" 
     tools:context="com.example.pvtboromeo.calc.MainActivity"> 

3) 프로젝트

4) 프로젝트를 실행을 다시 빌드합니다. https://developer.android.com/topic/libraries/data-binding/index.html

행운을 빕니다 :

은이 모습을 데이터 바인딩에 대한 자세한 정보를 원한다면!

이 내 코드입니다 :

build.gradle :

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 26 
    buildToolsVersion "26.0.1" 
    defaultConfig { 
     applicationId "your_app_id" 
     minSdkVersion 15 
     targetSdkVersion 26 
     versionCode 1 
     versionName "1.0" 
     testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
    dataBinding { 
     enabled = true 
    } 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { 
     exclude group: 'com.android.support', module: 'support-annotations' 
    }) 
    compile 'com.android.support:appcompat-v7:26.+' 
    compile 'com.android.support.constraint:constraint-layout:1.0.2' 
    testCompile 'junit:junit:4.12' 
} 

MainActivity :

public class MainActivity extends AppCompatActivity { 

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

     ActivityMainBinding activityMainBinding = DataBindingUtil 
       .setContentView(this, R.layout.activity_main); 

    } 
} 

이 ActivityMainBinding을 사용하기 전에 프로젝트를 다시 빌드해야합니다.

+0

데이터 바인딩을 사용했지만 항상 Resours ActivityMainBinding 또는 LOL을 찾을 수 없다는 오류가 발생했습니다. 그래서 나는 바인딩 LOL을 포기했습니다. – Vince

+0

MainActivity에서 ActivityMainBinding 클래스를 사용하기 전에 프로젝트를 다시 빌드 했습니까 ?? 이제 코드를 게시하여 사용할 수 있습니다. – moamsi