2014-12-30 2 views
0

저는 Android에 익숙하지 않아 카메라에서 사진을 찍으려고합니다. here를 제공 한 예를 보면, 나는 같은 MainActivity.java 내 응용 프로그램에서 구현하려고 :Android - 카메라로 사진 찍기

여기
public class MainActivity extends ActionBarActivity { 

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


@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); 
} 

static final int REQUEST_IMAGE_CAPTURE = 1; 

public void dispatchTakePictureIntent(View view) { 
    Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
    startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE); 
} 
} 

가 내 activity_main.xml :

<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:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"> 

    <TextView android:text="@string/welcome" android:layout_width="wrap_content" 
     android:layout_height="wrap_content" android:layout_centerHorizontal="true" 
     android:textSize="40dp" android:textStyle="bold" android:textColor="#990000"/> 
    <GridView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:numColumns="2" 
     android:columnWidth="50dp" 
     android:gravity="center_horizontal"> 
      <Button 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="@string/picture_1" 
       android:onClick="dispatchTakePictureIntent"/> 
     </GridView> 

</RelativeLayout> 

나는 다음과 같은 오류가 점점 오전 :

java.lang.RuntimeException: Unable to start activity ComponentInfo{---/.MainActivity}: java.lang.UnsupportedOperationException: addView(View, LayoutParams) is not supported in AdapterView 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2209) 
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2269) 
     at android.app.ActivityThread.access$800(ActivityThread.java:139) 
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1210) 
     at android.os.Handler.dispatchMessage(Handler.java:102) 
     at android.os.Looper.loop(Looper.java:136) 
     at android.app.ActivityThread.main(ActivityThread.java:5102) 
     at java.lang.reflect.Method.invokeNative(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:515) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) 
     at dalvik.system.NativeStart.main(Native Method) 
     Caused by: java.lang.UnsupportedOperationException: addView(View, LayoutParams) is not supported in AdapterView 
     at android.widget.AdapterView.addView(AdapterView.java:478) 
     at android.view.LayoutInflater.rInflate(LayoutInflater.java:759) 
     at android.view.LayoutInflater.rInflate(LayoutInflater.java:758) 
     at android.view.LayoutInflater.inflate(LayoutInflater.java:492) 
     at android.view.LayoutInflater.inflate(LayoutInflater.java:397) 
     at android.view.LayoutInflater.inflate(LayoutInflater.java:353) 
      at android.support.v7.app.ActionBarActivityDelegateBase.setContentView(ActionBarActivityDelegaeBase.java:228) 
     at android.support.v7.app.ActionBarActivity.setContentView(ActionBarActivity.java:102) 
     at ---/.MainActivity.onCreate(MainActivity.java:17) 
     at android.app.Activity.performCreate(Activity.java:5248) 
     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1110) 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2173) 
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2269) 
            at android.app.ActivityThread.access$800(ActivityThread.java:139) 
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1210) 
            at android.os.Handler.dispatchMessage(Handler.java:102) 
            at android.os.Looper.loop(Looper.java:136) 
            at android.app.ActivityThread.main(ActivityThread.java:5102) 
            at java.lang.reflect.Method.invokeNative(Native Method) 
            at java.lang.reflect.Method.invoke(Method.java:515) 
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) 
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) 
            at dalvik.system.NativeStart.main(Native Method) 

나는 아마 뭔가 잘못하고있어, 누군가 내 실수를 지적 할 수 있니? 미리 감사드립니다.

+1

여기에 MainActivity의 '전체 코드'와 '오류'를 게시하십시오. – codePG

+1

줄 번호 '17'을 알려줄 수 있습니까 – codePG

+0

@codePG 17 번 줄에 의견을 입력하십시오. – SalmonKiller

답변

3

UnsupportedOperationException: addView(View, LayoutParams) is not supported in AdapterView

ArrayView (귀하의 경우 GRIDVIEW에서)의 하위 클래스는 레이아웃 파일에 직접 추가되거나 코드에 추가 된 하위를 가질 수 없습니다.

귀하의 코드 :

<GridView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:numColumns="2" 
     android:columnWidth="50dp" 
     android:gravity="center_horizontal"> 
      <Button 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="@string/picture_1" 
       android:onClick="dispatchTakePictureIntent"/> 
     </GridView> 

이 그것을하지 마!

GridView의 addView 메소드를 호출하므로 예외가 발생합니다. 대신 사용

 <GridView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:numColumns="2" 
      android:columnWidth="50dp" 
      android:gravity="center_horizontal"/> 

을 또한,이 활동 또는 어댑터 (자사의 getView 방법)의 코드에서 LayoutInflater.inflate 방법을 사용하는 경우, 두 번째 매개 변수로의 GridView를 전달하지 않습니다. 예를 들어, 사용하지 않는 :

convertView = inflator.inflate(R.layout.child, parent); 

을 대신 사용

convertView = inflator.inflate(R.layout.child, parent, false); 
+1

허용 된 답변이어야합니다. –

1

yout xml에서 GridView에 Button을 추가하는 이유는 무엇입니까?

GridView는 이러한 목적으로 설계되지 않았습니다. GridView 외부에 단추를 넣고 시도하십시오. 오류는 그것에 관한 것입니다.

GridView는 그리드 패턴의보기를 표시하는 데만 사용할 수 있으며 어댑터를 사용하여 데이터를 표시합니다.

1

은 다음과 같이 그리드 뷰를 사용

<GridView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:numColumns="2" 
      android:columnWidth="50dp" 
      android:gravity="center_horizontal"/> 

의 GridView 그리드 패턴에서보기를 표시하는 데 사용과 유사하게됩니다 Adapter을 사용하여 데이터를 표시합니다.

관련 문제