2013-07-26 4 views
0

안녕하세요, 내 주류 클래스의 onmenuselectlistener와 함께 onclicklistener를 사용하려고하고 프로그램이 실행되지만 팝업 메뉴를 선택하면 다른 사람들이 원하는 텍스트를 원하는대로 설정할 수 없습니다. onMenuSelectListener를 구현하지 않았다는 것을 알고 있고 내 문제가 있다면이 작업을 수행하는 다른 방법이 있습니까?mainactivity에서 onClickListener 및 onMenuSelectListener를 사용하는 방법은 무엇입니까?

여기 내 코드입니다 :

public class MainActivity extends Activity implements OnClickListener { 
// init variables 
Handler uiHandler; 
EditText cl; 
TextView info; 
Button enter; 
Button line; 
Button arc; 
DrawingUtils callDU = new DrawingUtils(); 
DrawingTools callDT = new DrawingTools(); 
EditTools callET = new EditTools(); 
Conversion callConversion = new Conversion(); 
GLSurfaceView mGLSurface; 
String Tag = "Debug"; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    mGLSurface = new GLSurfaceView(this); 
    mGLSurface.setRenderer(new BasicRenderer()); 
    setContentView(R.layout.canvas); 
    FrameLayout v = (FrameLayout) findViewById(R.id.canvas); 
    v.addView(mGLSurface); 

    // init views and buttons 
    info = (TextView) findViewById(R.id.info); 
    enter = (Button) findViewById(R.id.enter); 
    line = (Button) findViewById(R.id.line); 
    arc = (Button) findViewById(R.id.arc); 
    cl = (EditText) findViewById(R.id.cl); 

    /* 
    * Handler for Main Thread uiHandler = new Handler() { public void 
    * handleMessage(Message msg) { switch (msg.what) { 
    * 
    * } Bundle bundle = msg.getData(); String string1 = 
    * bundle.getString("P1Key"); String string2 = 
    * bundle.getString("P2Key"); info.setText(string1); 
    * info.setText(string2); } }; 
    */ 

} 

@Override 
public void onClick(View v) { 
    switch (v.getId()) { 

    case R.id.enter: 

     break; 
    case R.id.line: 

     break; 
    case R.id.arc: 

     break; 

    } 

}; 

public void CreatePopupMenu(View v) { 
    PopupMenu mypopupmenu = new PopupMenu(this, v); 
    MenuInflater inflater = mypopupmenu.getMenuInflater(); 
    inflater.inflate(R.menu.filemenu, mypopupmenu.getMenu()); 
    mypopupmenu.show(); 
} 

@Override 
public boolean onMenuItemSelected(int featureId, MenuItem item) { 
    // TODO Auto-generated method stub 
    switch (item.getItemId()) { 
    case R.id.newCanas: 
     info.setText("New"); 
     Log.d(Tag, "New was clicked"); 
     break; 
    case R.id.open: 
     break; 
    case R.id.save: 
     break; 
    } 
    return super.onMenuItemSelected(featureId, item); 

} 

}

답변

0

당신은 아무것도에 onClickListeners를 부착하는 것처럼 그것은 보이지 않는다. 즉, "onClick 이벤트가 나를 타겟으로 해고 될 때마다이 액션을 수행하십시오"라고 말하는 것입니다. 하지만 당신은 결코 자신을 목표로 삼지 않습니다. onCreate에 다음 코드를 추가하십시오.

arc.setOnClickListener(this); 
line.setOnClickListener(this); 
enter.setOnClickListener(this); 

PopupMenu과 같은 일이 발생합니다. 메뉴의 레이아웃을 확장 한 직후에 mypopupmenu.addOnMenuItemSelectListener(this)을 추가하십시오.

+0

메뉴 항목은 무엇입니까? –

+0

답변을 수정했습니다. – Jonathan

+0

아 좋아요. 나는 그것을 시도 할 것입니다. –

0

조나단이 맞습니다. 추가 한 단추를 만든 후에 추가 한 단추 각각에 .setOnClickListener(this);을 추가해야합니다. 메뉴 항목의

하지만, 다음을 수행해야합니다 :

1) 메뉴의 항목으로 레이아웃을 만들고 res/menu/ 디렉토리에 저장합니다.

예 : main.xml에

<item 
    android:id="@+id/action_settings" 
    android:orderInCategory="100" 
    android:showAsAction="never" 
    android:title="@string/action_settings"/> 

</menu> 

2)라는 방식을 재정의 onCreateOptionsMenu()가 메뉴에서 항목을 채우는.

예 :

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; 
} 

3) 당신이 ActionListener를 함께하고있는 것처럼 당신이 스위치를 사용하여 원하는대로 할 수있는 방법 onOptionsItemSelected()를 재정의합니다.

4) 또한 이전 방법과 동일한 onPrepareOptionsMenu() 메서드를 재정의 할 수도 있지만 메뉴가 열릴 때마다 호출됩니다.

행운을 빕니다

+0

OP의 메뉴 항목이 옵션 메뉴에 있는지 아니면 보통의 오래된 메뉴에 있는지에 따라 다릅니다. OP가'onCreateOptionsMenu'에 대한 호출을 가지고 있지 않기 때문에 나는 OP가 옵션 메뉴를 사용하고 있다고 생각하지 않았습니다. 그 또는 그녀가 그 때 당신 맞다면. – Jonathan

+0

버튼 파일을 클릭했을 때 나타나는 팝업 메뉴입니다. 그 이외의 옵션 메뉴 또는 평범한 이전 메뉴의 차이는 모르겠다. –

+0

글쎄, 그렇다면 메뉴의 [Android 개발자 가이드] (http://developer.android.com/guide/topics/ui/menus.html)를 따라야합니다. 다양한 메뉴 (문맥, 팝업 등) –

관련 문제