2014-10-12 2 views
-1

하나의 작업에 다른 문자열 값을 전달해야하는 버튼이 있습니다. 내 주요 활동에 버튼 리스너를 포함 시키려고하면 NullPointer 예외가 발생하고 stackoverflow에서 모든 게시물을 시도 할 때이 작업이 중단되어 작동합니다! 나는 내 문제가 무엇인지 알 수 없다. fragment_layout에서프래그먼트가있는 버튼 리스너

버튼 정의 : MainActivity에서

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/LinearLayout1" 
style="@style/AppBaseTheme" 
android:screenOrientation="portrait" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:layout_gravity="" 
android:animateLayoutChanges="true" 
android:background="#f000" 
android:baselineAligned="false" 
android:gravity="top" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
tools:context=".MainActivity" > 

<LinearLayout 
    android:id="@+id/LinearLayout01" 
    style="@style/lineralLayout" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:gravity="top" 
    android:orientation="vertical" 
    android:weightSum="3" > 

    <Button 
    android:id="@+id/button1s" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="@drawable/f0" 
    android:layout_weight="1" 
    /> 

    <Button 
    android:id="@+id/button2s" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="@drawable/f2" 
    android:layout_weight="1" 
    /> 

<Button 
    android:id="@+id/button3" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="@drawable/f8" 
    android:layout_weight="1" /> 

<Button 
    android:id="@+id/button4" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="@drawable/f40" 
    android:layout_weight="1" /> 

<Button 
    android:id="@+id/button5" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="@drawable/dont_know" 
    android:layout_weight="1" /> 

</LinearLayout> 
</LinearLayout> 

코드 :

public class MainActivity extends Activity implements View.OnClickListener { 
private Button button1; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    button1 = (Button) findViewById(R.id.button1s); 
    button1.setOnClickListener(this); 
    button2 = (Button) findViewById(R.id.button2s); 
    button2.setOnClickListener(this); 
} 

@Override 
public void onClick(View v) { 
    String toParse = new String(); 
    switch (v.getId()) { 
    case R.id.button1s: 
     toParse = "0"; 
     break; 
    case R.id.button2s: 
     toParse = "90"; 
     break; 

    } 
    Intent intent = new Intent(MainActivity.this, DuzaKartaActivity.class); 
    intent.putExtra(TEXT_KEY, toParse); 
    startActivity(intent); 

} 

코드 조각에서 클래스 :

public class StandardFragment extends Fragment { 

public StandardFragment(){} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 

    View rootView = inflater.inflate(R.layout.fragment_layout, container, false); 
    return rootView; 
} 

}

그리고 여기에 몇 가지 코드입니다 그만큼 로그 캣 출력 :

10-12 11:14:28.499: E/AndroidRuntime(3265): FATAL EXCEPTION: main 
10-12 11:14:28.499: E/AndroidRuntime(3265): Process: com.ericpol.scrumpoker, PID: 3265 
10-12 11:14:28.499: E/AndroidRuntime(3265): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.ericpol.scrumpoker/com.ericpol.scrumpoker.MainActivity}: java.lang.NullPointerException 
10-12 11:14:28.499: E/AndroidRuntime(3265):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195) 
10-12 11:14:28.499: E/AndroidRuntime(3265):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245) 
10-12 11:14:28.499: E/AndroidRuntime(3265):  at android.app.ActivityThread.access$800(ActivityThread.java:135) 
10-12 11:14:28.499: E/AndroidRuntime(3265):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) 
10-12 11:14:28.499: E/AndroidRuntime(3265):  at android.os.Handler.dispatchMessage(Handler.java:102) 
10-12 11:14:28.499: E/AndroidRuntime(3265):  at android.os.Looper.loop(Looper.java:136) 
10-12 11:14:28.499: E/AndroidRuntime(3265):  at android.app.ActivityThread.main(ActivityThread.java:5017) 
10-12 11:14:28.499: E/AndroidRuntime(3265):  at java.lang.reflect.Method.invokeNative(Native Method) 
10-12 11:14:28.499: E/AndroidRuntime(3265):  at java.lang.reflect.Method.invoke(Method.java:515) 
10-12 11:14:28.499: E/AndroidRuntime(3265):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 
10-12 11:14:28.499: E/AndroidRuntime(3265):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
10-12 11:14:28.499: E/AndroidRuntime(3265):  at dalvik.system.NativeStart.main(Native Method) 
10-12 11:14:28.499: E/AndroidRuntime(3265): Caused by: java.lang.NullPointerException 
10-12 11:14:28.499: E/AndroidRuntime(3265):  at com.ericpol.scrumpoker.MainActivity.onCreate(MainActivity.java:80) 
10-12 11:14:28.499: E/AndroidRuntime(3265):  at android.app.Activity.performCreate(Activity.java:5231) 
10-12 11:14:28.499: E/AndroidRuntime(3265):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 
10-12 11:14:28.499: E/AndroidRuntime(3265):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159) 
+0

후 당신의 로그 캣은 다음 –

+0

버튼이 선언되지 – Kiloreux

+0

'button1s' 버튼을 fragment_layout' 레이아웃 '에서 정의하는 것입니다하지만 당신은 ρяσѕρєя K @ setContentView' 방법 –

답변

2

당신은 변경해야이

setContentView(R.layout.activity_main); 

setContentView(R.layout.fragment_layout); 
+0

불행히도 아무런 차이가 없었습니다 – Lenny

+0

@Lenny impossible. 우리 모두의 코드를 보여주지 않습니다. – Simas

+0

@ user3249477 : 알아요. 작동해야합니다. 코드의 어느 부분이이 활동 안에 많은 코드가 있기 때문에 여기에서 중요 할 수 있지만 버튼 1을 삭제할 때 앱이로드됩니다. button1.setOnClickListener (this); – Lenny

1

에 대한 귀하의 Buttonfragment_layout 내부에 정의되어 있고 다음 find the view을 활동을 팽창하는 것을 시도하고있다. 이 일은 실 거예요. 당신이 중 하나는 inflatefragment_layoutfindViewById

또는

Fragment를 확장하는 클래스를 만들고 onCreateView 방법을 무시하고 활동에 조각을 추가 할 FragmentManager를 사용하여 호출해야합니다. 오버라이드 onCreateView 메서드에서 리스너를 설정할 수 있습니다.

0

문제가 무엇인지 알 수 없으므로 fragemt_layout xml 내에서 onClick 메서드를 설정하고 MainActivity에서 onClick 수신기를 제거했습니다.

관련 문제