2014-05-18 2 views
0

나는 안드로이드 개발의 초보자로서 질문을하기 위해 왔습니다. 지금은 Android Studio에서 개발중인 안드로이드의 기초를 가르치는 튜토리얼을 따르려고하지만 내 Samsung Galaxy S5과 관련된 문제가 발생했습니다.ImageView에서 Samsung Galaxy S5의 안드로이드 응용 프로그램이 충돌합니다.

내가하려는 것은 갤러리에서 이미지를 가져 와서 ImageView에 넣는 것입니다. 그러나 애플리케이션을 시작하려고 할 때 충돌 오류가 발생합니다. 많은 사람들이이 문제를 안고 삼성 SDK를 다운로드했음을 알고 있지만,이 문제를 위해 무엇을 어떻게 사용해야하는지 모르겠습니다. (미안하지만, 나는이 모든 어제를 시작하고 내가 나를 도울 수있는 일을 찾을 수 없습니다 ...)

를 코드는 여기에 있습니다 :

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" 
tools:context="${packageName}.${activityClass}"> 


<TabHost 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:id="@+id/tabHost" 
    android:layout_alignParentTop="false"> 

    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:orientation="vertical"> 

     <TabWidget 
      android:id="@android:id/tabs" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content"></TabWidget> 

     <FrameLayout 
      android:id="@android:id/tabcontent" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent"> 

      <LinearLayout 
       android:id="@+id/tabCreator" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" 
       android:orientation="vertical"> 

       <TextView 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:textAppearance="?android:attr/textAppearanceLarge" 
        android:text="Contatto" 
        android:id="@+id/textView" 
        android:layout_gravity="center_horizontal" /> 

       <ImageView 
        android:layout_width="100dp" 
        android:layout_height="100dp" 
        android:id="@+id/imgContact" 
        android:layout_gravity="center_horizontal" 
        android:layout_marginTop="10dp" 
        android:src="@drawable/no_user_logo" 
        android:clickable="false" /> 

       <EditText 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:inputType="textPersonName" 
        android:ems="10" 
        android:id="@+id/txtName" 
        android:textAllCaps="false" 
        android:hint="Nome" 
        android:layout_marginTop="10dp" /> 

       <EditText 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:inputType="phone" 
        android:ems="10" 
        android:id="@+id/txtNumber" 
        android:hint="Numero di Telefono" 
        android:layout_marginTop="10dp" 
        android:layout_below="@id/txtName" 
        android:layout_alignParentLeft="true" 
        android:layout_alignParentStart="false" /> 

       <EditText 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:inputType="textEmailAddress" 
        android:ems="10" 
        android:id="@+id/txtMail" 
        android:layout_marginTop="10dp" 
        android:hint="Email" /> 

       <Button 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:text="Aggiungi Contatto" 
        android:id="@+id/btnAdd" 
        android:layout_centerVertical="true" 
        android:layout_centerHorizontal="true" 
        android:enabled="false" 
        android:layout_gravity="center_horizontal" /> 

      </LinearLayout> 

      <LinearLayout 
       android:id="@+id/tabList" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" 
       android:orientation="vertical"> 

       <TextView 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:textAppearance="?android:attr/textAppearanceLarge" 
        android:text="Contatti" 
        android:id="@+id/textView2" 
        android:layout_gravity="center_horizontal" /> 

       <ListView 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:id="@+id/banana" 
        android:layout_gravity="center_horizontal" 
        android:layout_marginTop="10dp" /> 
      </LinearLayout> 

     </FrameLayout> 

    </LinearLayout> 
</TabHost> 

</RelativeLayout> 

MainActivity.java

public class MainActivity extends Activity { 

EditText txtName, txtPhone, txtEmail; 
List<Contact> lstContacts = new ArrayList<Contact>(); 
ListView lstViewContact; 
ImageView img = (ImageView)findViewById(R.id.imgContact); 

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

    txtName = (EditText) findViewById(R.id.txtName); 
    txtPhone = (EditText) findViewById(R.id.txtNumber); 
    txtEmail = (EditText) findViewById(R.id.txtMail); 
    lstViewContact = (ListView)findViewById(R.id.banana); 

    final Button btn = (Button) findViewById(R.id.btnAdd); 
    btn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      addContact(txtName.getText().toString().trim(), txtPhone.getText().toString(), txtEmail.getText().toString()); 
      Toast.makeText(getApplicationContext(), "Banana", Toast.LENGTH_SHORT).show(); 
     } 
    }); 
    img.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Intent intent = new Intent(); 
      intent.setType("image/*"); 
      intent.setAction(Intent.ACTION_GET_CONTENT); 
      startActivityForResult(Intent.createChooser(intent, "Select Contact Image"), 1); 
     } 
    }); 

    txtName.addTextChangedListener(new TextWatcher() { 
     @Override 
     public void beforeTextChanged(CharSequence charSequence, int i, int i2, int i3) { 

     } 

     @Override 
     public void onTextChanged(CharSequence charSequence, int i, int i2, int i3) { 
      boolean goName = false, goPhone = false; 
      if(txtName.length() > 0) goName = txtName.getText().toString().trim().length() > 0; 
      if(txtPhone.length() > 0) goPhone = txtPhone.getText().toString().trim().length() > 0; 

      btn.setEnabled(goName && goPhone); 
     } 

     @Override 
     public void afterTextChanged(Editable editable) { 

     } 
    }); 
    txtPhone.addTextChangedListener(new TextWatcher() { 
     @Override 
     public void beforeTextChanged(CharSequence charSequence, int i, int i2, int i3) { 

     } 

     @Override 
     public void onTextChanged(CharSequence charSequence, int i, int i2, int i3) { 
      boolean goName = false, goPhone = false; 
      if(txtName.length() > 0) goName = txtName.getText().toString().trim().length() > 0; 
      if(txtPhone.length() > 0) goPhone = txtPhone.getText().toString().trim().length() > 0; 

      btn.setEnabled(goName && goPhone); 
     } 

     @Override 
     public void afterTextChanged(Editable editable) { 

     } 
    }); 


    TabHost tabHost = (TabHost)findViewById(R.id.tabHost); 
    tabHost.setup(); 

    TabHost.TabSpec tabSpec = tabHost.newTabSpec("creator"); 
    tabSpec.setContent(R.id.tabCreator); 
    tabSpec.setIndicator("Creator"); 
    tabHost.addTab(tabSpec); 

    tabSpec = tabHost.newTabSpec("list"); 
    tabSpec.setContent(R.id.tabList); 
    tabSpec.setIndicator("List"); 
    tabHost.addTab(tabSpec); 

} 

public void onActivityResult(int reqCode, int resCode, Intent data) { 
    if(resCode == RESULT_OK) { 
     if(reqCode == 1) img.setImageURI(data.getData()); 
    } 
} 

private class lstContactsAdapter extends ArrayAdapter<Contact> { 
    public lstContactsAdapter() { 
     super(MainActivity.this, R.layout.listview_item, lstContacts); 
    } 

    @Override 
    public View getView(int position, View view, ViewGroup parent) { 
     //Se la view non esiste io la metto come listview_item all'interno della lista alla fine (non al root) 
     if(view == null) view = getLayoutInflater().inflate(R.layout.listview_item, parent, false); 

     Contact currentContact = lstContacts.get(position); 

     TextView name = (TextView)view.findViewById(R.id.contactName); 
     TextView phone = (TextView)view.findViewById(R.id.contactPhone); 
     TextView mail = (TextView)view.findViewById(R.id.contactMail); 
     name.setText(currentContact.getName()); 
     phone.setText(currentContact.getPhone()); 
     mail.setText(currentContact.getEmail()); 

     return view; 
    } 
} 
private void addContact(String name, String phone, String email) { 
    lstContacts.add(new Contact(name, phone, email)); 
    ArrayAdapter<Contact> adapter = new lstContactsAdapter(); 
    lstViewContact.setAdapter(adapter); 
} 
} 

나는 적절한 지식없이이 질문에 대한 미안 해요,하지만 난 홉 너는 나를 이해하고 도와 줄거야. 독서에 감사 드리며 내가 한 모든 문법 오류에 대해 유감스럽게 생각합니다. 이

public void onActivityResult(int reqCode, int resCode, Intent data) { 
    if(resCode == RESULT_OK) { 
     if(reqCode == 1) img.setImageURI(data.getData()); 
     } 
} 

넣어이 대신 클래스에서

+0

logcat에서 스택 추적을 게시하십시오. – vjdhama

+0

나는 그것을 얻는 방법을 정말로 모른다. 그러나 나는 그것이 [this]라고 생각한다 (http://imgur.com/gxd13rW). 나는 그렇지 않다면, 내가 알기를 바랍니다. 저는 C# 개발자이고이 도구들과 잘 사용되지 않는다고 생각합니다. – Zavian

답변

0

,

@Override 
public void onActivityResult(int reqCode, int resCode, Intent data) { 
    if(resCode == RESULT_OK) { 
     if(reqCode == 1 && data.getData() != null) 
      img.setImageURI(data.getData()); 
     } 
    super.onActivityResult(reqCode, resCode, data); 
} 

당신은 항상 자신과 기본 동작을 보장하기 위해 super 클래스 메소드를 호출해야합니다. 또한 @Override 주석을 사용하면 onActivityResultcallback으로 호출됩니다. 마지막으로 data.getData() != null은 NPE를받지 않도록합니다.

관련 문제