2014-04-27 2 views
0

set onclicklistener를 사용하려고 할 때마다 에뮬레이터에서 실행하려고 시도 할 때마다 응용 프로그램이 중지되었다는 오류 메시지가 표시됩니다. 코드의 해당 부분을 꺼내면 작업이 시작됩니다. 나는 당신의 문제가 당신의 버튼이 당신의 조각 레이아웃이 아니라 당신의 주요 활동 XML 레이아웃에 있다고 생각setOnclicklistener 메서드가 작동하지 않습니다.

package com.example.android_project_thenewboston; 


    import android.support.v7.app.ActionBarActivity; 
    import android.support.v7.app.ActionBar; 
    import android.support.v4.app.Fragment; 
    import android.os.Bundle; 
    import android.view.LayoutInflater; 
    import android.view.Menu; 
    import android.view.MenuItem; 
    import android.view.View; 
    import android.view.ViewGroup; 
    import android.os.Build; 
    import android.widget.Button; 
    import android.widget.TextView; 

    public class MainActivity extends ActionBarActivity { 
int counter; 
Button add, sub; 
TextView display; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    counter = 0; 
     add = (Button) findViewById(R.id.bAdd); 
     sub = (Button) findViewById(R.id.bSub); 
     display = (TextView) findViewById(R.id.tDisplay); 
     add.setOnClickListener(new View.OnClickListener() { 


      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       counter++; 
       display.setText("Your grand total is " +counter); 
      } 
     }); 
     sub.setOnClickListener(new View.OnClickListener() { 


      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       counter--; 
       display.setText("Your grand total is " +counter); 
      } 
     }); 
    if (savedInstanceState == null) { 
     getSupportFragmentManager().beginTransaction() 
       .add(R.id.container, new    PlaceholderFragment()).commit(); 
    } 

} 




@Override 
public boolean onCreateOptionsMenu(Menu menu) { 

    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.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(); 
    if (id == R.id.action_settings) { 
     return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 

/** 
* A placeholder fragment containing a simple view. 
*/ 
public static class PlaceholderFragment extends Fragment { 

    public PlaceholderFragment() { 
    } 

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

} 

____________________________________________________________________________________ 
fragment_main.xml 


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:orientation = "vertical" 
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.example.android_project_thenewboston.MainActivity$PlaceholderFragment" > 

<TextView 
    android:id="@+id/textView1" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:gravity="center" 
    android:text="My name is shiven" 
    android:textSize="30dp" /> 
<TextView 
    android:id = "@+id/text1" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:gravity="center" 
    android:text="" 
    android:textSize="10dp" /> 
<Button 
    android:id ="@+id/bAdd" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:gravity="center" 
    android:text="Add one" 
    android:textColor="#FFFFFFFF" 
    android:textSize="30dp" /> 
<TextView 
    android:id = "@+id/tDisplay" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:gravity="center" 
    android:text="" 
    android:textSize="10dp" /> 
<Button 

    android:id = "@+id/bSub" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:gravity="center" 
    android:text="Subtract one" 
    android:textColor="#FFFFFFFF" 
    android:textSize="30dp"/> 

+0

스택 추적이 필요합니다. R.layout.activity_main에 R.id.b ID가 추가 된 버튼이 있습니까? –

+0

그래 너가 간다 – user3557441

답변

2

(Mainactivity.java 파일) :

이 내 코드입니다.

onClickListener 코드는 조각 코드 내에 있어야합니다. 예를 들어

:

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

    add = (Button) rootView.findViewById(R.id.bAdd); 
    sub = (Button) rootView.findViewById(R.id.bSub); 
    display = (TextView) rootView.findViewById(R.id.tDisplay); 
    add.setOnClickListener(new View.OnClickListener() { 


     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      counter++; 
      display.setText("Your grand total is " +counter); 
     } 
    }); 
    return rootView; 
} 

, 코드와 XML/로그 캣 충돌 출력을 추가하시기 바랍니다.

+0

이것은 기본적으로 신선한 안드로이드 프로젝트가 조각을 가지고 있고 그렇지 않은 ADT의 어리석은 새로운 업데이 트 때문에 모두이다! – Antrromet

+0

그래, 많은 사람들이 혼란스러워. – SacreDeveloper

+0

좋아요, 덕분에 코드 조각을 기본 XML 파일로 옮겼습니다. : D – user3557441

관련 문제