2010-05-30 3 views
0

첫 번째로 이것은 꽤 긴 게시물로 밝혀 졌으므로 나와 함께 견뎌주십시오. 너무 어렵지는 않지만 제게 올바르게 설명하지 않았다면 나와 함께 뭔가를 명확히해야 할 수도 있습니다. 며칠 전이 포럼에서 멘토들로부터 도움을 받았기 때문에 부분적으로 'mapClass'클래스를 설정했지만 문제가 발생하여 올바르게 실행되지 않아 가능한 경우 도움이 필요합니다. 내가 볼 수 있도록 아래에 코드를 게시 할 것입니다.Android : 누가이 Google지도 수업을 설정하는 데 도움을 줄 수 있습니까?

필자가 가진 것은 아이템 배열을위한 listView를 설정하는 'Dundrum'클래스입니다.

다음에 ive는 listItems에 setOnClickListener() 메소드를 설정하고 올바른보기에 링크하는 데 사용하는 'dundrumSelector'클래스를가집니다.

이것은 MY DUNDDRUM 선택기 CLASS ....

public static final int BUTTON1 = R.id.anandaAddressButton; 
public static final int BUTTON2 = R.id.bramblesCafeAddressButton; 
public static final int BUTTON3 = R.id.brannigansAddressButton; 

공개 무효에서 onCreate (번들 savedInstanceState) { super.onCreate (savedInstanceState);

public void onClick(View view) { 
     Intent myIntent = new Intent(view.getContext(),MapClass.class); 
     myIntent.putExtra("button", BUTTON1); 
     startActivityForResult(myIntent,0); 

    } 

}); 

Button bramblesbutton = (Button) findViewById(R.id.bramblesCafeAddressButton); 
bramblesbutton.setOnClickListener(new View.OnClickListener() { 

    public void onClick(View view) { 
     Intent myIntent = new Intent(view.getContext(),MapClass.class); 
     myIntent.putExtra("button", BUTTON2); 
     startActivityForResult(myIntent, 0); 
    } 

}); 

등 등

int position = getIntent().getExtras().getInt("position"); 

    if(position == 0){ 
     setContentView(R.layout.ananda); 
    }; 
    if(position == 1){ 
     setContentView(R.layout.bramblescafe); 
    }; 
    if(position == 2){ 
     setContentView(R.layout.brannigans); 
Button anandabutton = (Button) findViewById(R.id.anandaAddressButton); 
anandabutton.setOnClickListener(new View.OnClickListener() { 
.... 난 당신의 상단에 볼 수있는 버튼을 나타내는 정적의 int를 설정 한 일 그리고

이 클래스는 내 mapClass 활동에서 하나의 메소드 만 갖고 싶어하기 때문에 각 위치에 대한 좌표가 다양하기 때문입니다. 예. 나는 100+지도 클래스가 본질적으로 메소드에 다른 좌표 이외의 다른 것을하고 싶어한다. 다음과 같이

그래서 내지도 클래스는 내 문제가 어디에
case DundrumSelector.BUTTON1: 
     handleCoordinates("53.288719","-6.241179"); 
     break; 
    case DundrumSelector.BUTTON2: 
     handleCoordinates("53.288719","-6.241179"); 
     break; 
    case DundrumSelector.BUTTON3: 
     handleCoordinates("53.288719","-6.241179"); 
     break; 
    } 
} 




private void handleCoordinates(String l, String b){ 


    mapView = (MapView) findViewById(R.id.mapView); 
    LinearLayout zoomLayout = (LinearLayout)findViewById(R.id.zoom); 
    View zoomView = mapView.getZoomControls(); 

    zoomLayout.addView(zoomView, 
      new LinearLayout.LayoutParams(
       LayoutParams.WRAP_CONTENT, 
       LayoutParams.WRAP_CONTENT)); 
     mapView.displayZoomControls(true); 

    mc = mapView.getController(); 
    String coordinates[] = {l, b}; 
    double lat = Double.parseDouble(coordinates[0]); 
    double lng = Double.parseDouble(coordinates[1]); 

    p = new GeoPoint(
      (int) (lat*1E6), 
      (int) (lng*1E6)); 

    mc.animateTo(p); 
    mc.setZoom(17); 
    mapView.invalidate(); 


} 

지금이은 ...입니다. onClick() 이벤트는 listView에서 제대로 작동하지 않습니다. 내가 그들의 의견에 들어갈 수 있기 전에 'DundrumSelector'의 메소드를 주석 처리해야한다.

는 그리고 이것은 내가 이해 해달라고 무엇을 첫째로 왜 온 클릭() 이벤트가 작동 실 거예요, 때문에 심지어지도는 그 다음 뷰.

나는 이것이 매우 긴 게시물입니다 알고 그렇게 꽤 혼란 스러울 당신이 어떤 해명을 원한다면 알려 주시기 수도 있습니다 ..

그냥 요약하자면

, 내가 뭘 하나 개의 클래스가있다 할 노력하고있어 그 내 'mapClass'에서 수행하려고하는 것과 같은지도 좌표를 설정합니다.

누군가에게 도움을 요청하거나이 일을 다른 방법을 제안 할 수 있습니다주세요! 모두에게 읽어 주셔서 감사합니다. 다음 IST

+0

는 전체 클래스를 게시 할 수 있습니까? 어떤 코드가 어떤 클래스에 더 잘 정의되어 있는가? 추가적으로 정확하게 작동하지 않는 것은 무엇입니까? onClick() 메서드가 호출되지 않습니다? 그리고 그것을 작동시키기 위해 당신은 무엇을하고 있습니까? DrumDrumSelector를 주석 처리하시오 ?? 코멘트를 쓰면 무엇을 의미합니까? 전체 클래스 코드? – RoflcoptrException

+0

안녕하세요 Sebi, 그래서 무슨 일이 일어 났는지 나는 onClickListeners()를 클래스에 코딩하면 listView의 항목을 클릭 할 수 없습니다. 그냥 '프로그램이 고장났다는 등의 오류가 발생합니다.' 그래서 각 버튼에 대해 설정 한 onClickListeners를 주석 처리해야하며 문제가 해결됩니다. 웬일인지 그것은 거기에서 그들을 좋아하지 않는다? 그러나 mapClass를 사용할 수 있도록이 메소드가 필요합니다. 각보기 내의 버튼으로 클릭하면 mapView가 나타납니다. 죄송합니다. 설명하는 것이 좋지 않으면 이해할 수 있습니까? 더 이상 정보가 필요하면 알려주세요. TY – Capsud

답변

0

문제점 : 여기

Button bramblesbutton = (Button) findViewById(R.id.bramblesCafeAddressButton); 
bramblesbutton.setOnClickListener(new View.OnClickListener() { 

당신은 당신이 위치 2에있어 올바른 된 setContentView() 메소드를 호출 한 경우에만 사용할 수있는 버튼에 OnClickListener를 설정하려고합니다.내용이 다른 단추 (단추가 포함되어 있지 않음)가있는 경우

Button bramblesbutton = (Button) findViewById(R.id.bramblesCafeAddressButton); 

은 null을 반환하고 다음 줄에는 NullPointerException이 반환됩니다. 따라서 해당 레이아웃을 사용하는 경우에만 onClickListener를 추가해야합니다.

네가 주석 처리하면 네가 작동한다. 그 이유는 null에 대한 메소드를 호출하려고하지 않기 때문이다. 그러나 다른 한편으로는, 당신이 그것을 주석 처리한다면, 클릭 수는 등록되지 않으므로 진행되지 않습니다.

가도 명확하게하기 위해 :

때 통과 위치 0,이 내용 없음 설정하는 다음 :

if(position == 0){ 
     setContentView(R.layout.ananda); 
    }; 

따라서 나는 다른 두 개의 버튼이 레이아웃은 Anada에 없을 것입니다 가정을하고 따라서 ClickListener를 할당하면 NullPointerException이 발생합니다.

이 문제를 해결하려면, 당신은 정말이 3 가지 레이아웃을 필요로하는 경우, 나는 그것을 (첫 번째 단추 예) 그런 식으로 할 것 :

if(position == 0){ 
     setContentView(R.layout.ananda); 
     Button anandabutton = (Button) findViewById(R.id.anandaAddressButton); 
     anandabutton.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View view) { 
       Intent myIntent = new Intent(view.getContext(),MapClass.class); 
       myIntent.putExtra("button", BUTTON1); 
       startActivityForResult(myIntent,0); 
      } 
     }); 
} 
+0

문제는 무엇입니까? – Capsud

+0

sry. 덧글과 답장을 섞어서 편집하는 데 몇 가지 문제가있었습니다. sry는 무슨 일이 있었는지 알지 못합니다.) –

+0

아, 알았습니다. 그래, 이걸 지나치는 전문가의 견해는 무엇일까? 오류를 명확히 해 주셔서 감사합니다 :) – Capsud

관련 문제