2014-04-26 5 views
1

Button에 대한 코드를 사용할 때 문제가 발생합니다. 그 중 하나는 new Boston tutorials입니다. 정확히 무엇을 말하고 있지만 logcat에 오류가 발생했습니다.불행히도 MyFirstApp이 중지되었습니다

package com.example.myfirstapp; 

    import android.support.v7.app.ActionBarActivity; 
    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.widget.Button; 
    import android.widget.TextView; 


    public class MainActivity extends ActionBarActivity { 

     int counter=0; 
     TextView display; 
     Button add; 
     Button sub; 
     @Override 
     protected void onCreate(Bundle savedInstanceState) { 

      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 

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

       @Override 
       public void onClick(View arg0) { 
        // TODO Auto-generated method stub 
        counter++; 
        display.setText("Your Total is " +counter); 

       } 
      });  

      sub.setOnClickListener(new View.OnClickListener() { 

       @Override 
       public void onClick(View arg0) { 
        // TODO Auto-generated method stub 
        counter--; 
        display.setText("Your 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; 
      } 
     } 

    } 

<?xml version="1.0" encoding="utf-8"?> 
    <manifest xmlns:android="http://schemas.android.com/apk/res/android" 
     package="com.example.myfirstapp" 
     android:versionCode="1" 
     android:versionName="1.0" > 

     <uses-sdk 
      android:minSdkVersion="8" 
      android:targetSdkVersion="19" /> 

     <application 
      android:allowBackup="true" 
      android:icon="@drawable/ic_launcher" 
      android:label="@string/app_name" 
      android:theme="@style/AppTheme" > 
      <activity 
       android:name=".MainActivity" 
       android:label="@string/app_name" > 
       <intent-filter> 
        <action android:name="android.intent.action.MAIN" /> 
         <category android:name="android.intent.category.DEFAULT" /> 
        <category android:name="android.intent.category.LAUNCHER" /> 
       </intent-filter> 
      </activity> 
     </application> 

    </manifest> 

로그 캣 파일은 이러한 오류를 보여줍니다이 내 매니페스트 파일입니다

: FATAL EXCEPTION: main 

Process: com.example.myfirstapp, PID: 1873 

E/AndroidRuntime(1873): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.myfirstapp/com.example.myfirstapp.MainActivity}: java.lang.NullPointerException 

E/AndroidRuntime(1873): at  android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2121) 

E/AndroidRuntime(1873):at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245) 

E/AndroidRuntime(1873):at android.app.ActivityThread.access$800(ActivityThread.java:135) 

E/AndroidRuntime(1873): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) 

E/AndroidRuntime(1873): at android.os.Handler.dispatchMessage(Handler.java:102) 

E/AndroidRuntime(1873): at android.os.Looper.loop(Looper.java:136) 

E/AndroidRuntime(1873): at android.app.ActivityThread.main(ActivityThread.java:5017) 

E/AndroidRuntime(1873): at java.lang.reflect.Method.invokeNative(Native Method) 

E/AndroidRuntime(1873): at java.lang.reflect.Method.invoke(Method.java:515) 

E/AndroidRuntime(1873): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 

E/AndroidRuntime(1873): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 

E/AndroidRuntime(1873): at dalvik.system.NativeStart.main(Native Method) 


E/AndroidRuntime(1873): Caused by: java.lang.NullPointerException 

E/AndroidRuntime(1873): at android.view.ViewConfiguration.get(ViewConfiguration.java:325) 


E/AndroidRuntime(1873): at android.view.View.<init>(View.java:3448) 


E/AndroidRuntime(1873): at android.view.View.<init>(View.java:3505) 


E/AndroidRuntime(1873): at android.widget.TextView.<init>(TextView.java:623) 


E/AndroidRuntime(1873): at android.widget.Button.<init>(Button.java:107) 


E/AndroidRuntime(1873): at android.widget.Button.<init>(Button.java:103) 


E/AndroidRuntime(1873): at android.widget.Button.<init>(Button.java:99) 


E/AndroidRuntime(1873): at com.example.myfirstapp.MainActivity.<init>(MainActivity.java:18) 


E/AndroidRuntime(1873): at java.lang.Class.newInstanceImpl(Native Method) 


E/AndroidRuntime(1873): at java.lang.Class.newInstance(Class.java:1208) 


E/AndroidRuntime(1873): at android.app.Instrumentation.newActivity(Instrumentation.java:1061) 


E/AndroidRuntime(1873): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2112) 


E/AndroidRuntime(1873): ... 11 more 


: I/Process(1873): Sending signal. PID: 1873 SIG: 9 

이 제발 도와주세요 그리고하지 마십시오 레이아웃 XML 파일을

<LinearLayout 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:orientation="vertical" 
    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.myfirstapp.MainActivity$PlaceholderFragment" > 

    <TextView 

     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="@string/hello_world" 
     android:textSize="45sp" 
     android:layout_gravity="center" 
     android:gravity="center" 
     android:id="@+id/tvDisplay" 
     /> 

    <Button 
     android:layout_width="250dp" 
     android:layout_height="wrap_content" 
     android:text="@string/add_button" 
     android:gravity="center" 
     android:layout_gravity="center" 
     android:id="@+id/bAdd" 

     /> 

    <Button 
     android:id="@+id/bSub" 
     android:layout_width="250dp" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:gravity="center" 
     android:text="@string/sub_button" /> 

</LinearLayout> 

입니다 나는 아주 새로운 오전 downvote 학습.

+1

레이아웃 xml 파일을 게시 할 수 있습니까? –

답변

1

조각에 레이아웃이 있습니다. 당신은 당신이 만든 조각의보기 전에 ButtonTextView를 초기화하는 onCreateView()

public static class PlaceholderFragment extends Fragment { 

int counter=0; 
TextView display; 
Button add; 
Button sub; 

@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.tvDisplay); 

    add.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 
      // TODO Auto-generated method stub 
      counter++; 
      display.setText("Your Total is " +counter); 

     } 
    });  

    sub.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 
      // TODO Auto-generated method stub 
      counter--; 
      display.setText("Your Total is " +counter); 
     } 

    }); 

    return rootView; 
} 


} 
0

에서 팽창 view에서 버튼의 참조 및 텍스트 뷰를 얻을 수 있습니다.

이동 Button, TextView 초기화 및 콜백 등록 코드 return rootView 문 전이나 PlaceholderFragmentonViewCreated(View view, Bundle savedInstanceState) 기능을 무시하고 그 메소드 내부에 코드를 삽입.

관련 문제