안드로이드/자바에 있지만 C/C++에서 잘 설립 된 초보자 & 오브젝트 파스칼. 단 하나만 활성화되어있는 5 개의 ImageButton이 있습니다. 그런 다음 외로운 사용 가능 버튼이 눌려지는 시점에서 다른 4 개는 부울 값 (enableBtn2..3 .. 등)과 함께 전달 된 setEnabled()를 호출하여 활성화해야합니다. 하지만 외톨드 인 에이블 된 버튼을 눌러 newRung() 멤버를 호출하면 다른 멤버 인 refreshMnuButtons()가 호출 될 때마다 setEnabled() 부모 클래스 member.Can 누군가가 호출하여 발생했다고 의심되는 예외가 발생합니다. 허점을 지적하시오. 나는 미친 듯이 설명을 찾았지 만 적절한 대답을 찾을 수없는 것 같습니다. 친절하게 내 코드가 첨부 참조 :ImageButton.setEnabled() throws Exception
는public class MyActivity extends Activity {
private ImageView cell1,cell2,cell3,cell4,cell5,cell6,rungClose;
private ImageButton mnuBtn1,mnuBtn2,mnuBtn3,mnuBtn4,mnuBtn5;
private boolean enableBtn1 = true,
enableBtn2 = false,
enableBtn3 = false,
enableBtn4 = false,
enableBtn5 = false;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_pic_ladder_main);
// setup toolbar
TableLayout tbl = (TableLayout)findViewById(R.id.tblToolbar);
ImageButton mnuBtn1 = new ImageButton(this);
mnuBtn1.setImageResource(R.drawable.rungopentool);
mnuBtn1.setEnabled(enableBtn1);
//setup mnuBtn1 listener
mnuBtn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
newRung();
}
});
ImageButton mnuBtn2 = new ImageButton(this);
mnuBtn2.setImageResource(R.drawable.noc);
mnuBtn2.setEnabled(enableBtn2);
//setup mnuBtn2 listener
mnuBtn2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
addNOC();
}
});
final ImageButton mnuBtn3 = new ImageButton(this);
mnuBtn3.setImageResource(R.drawable.ncc);
mnuBtn3.setEnabled(enableBtn3);
//setup mnuBtn3 listener
mnuBtn3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
addNCC();
}
});
ImageButton mnuBtn4 = new ImageButton(this);
mnuBtn4.setImageResource(R.drawable.process);
mnuBtn4.setEnabled(enableBtn4);
//setup mnuBtn4 listener
mnuBtn4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
addProcess();
}
});
ImageButton mnuBtn5 = new ImageButton(this);
mnuBtn5.setImageResource(R.drawable.coil);
mnuBtn5.setEnabled(enableBtn5);
//setup mnuBtn5 listener
mnuBtn5.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
addCoil();
}
});
TableRow mnurow = new TableRow(this);
mnurow.setBackgroundColor(0x3F000000);
// display menu
mnurow.addView(mnuBtn1);
mnurow.addView(mnuBtn2);
mnurow.addView(mnuBtn3);
mnurow.addView(mnuBtn4);
mnurow.addView(mnuBtn5);
tbl.addView(mnurow);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_pic_ladder_main, menu);
return true;
}
private void createRungImages() {
// TODO
}
private void newRung()
{
Toast.makeText(this, "New Rung" ,Toast.LENGTH_SHORT).show();
enableBtn2 = true;
enableBtn3 = true;
enableBtn4 = true;
enableBtn5 = true;
enableBtn1 = false;
refreshMnuButtons();
}
private void addNOC()
{
Toast.makeText(this, "NOC" ,Toast.LENGTH_SHORT).show();
}
private void addNCC()
{
Toast.makeText(this, "NCC" ,Toast.LENGTH_SHORT).show();
}
private void addProcess()
{
Toast.makeText(this, "Add Process" ,Toast.LENGTH_SHORT).show();
}
private void addCoil()
{
Toast.makeText(this, "Coil" ,Toast.LENGTH_SHORT).show();
}
public void refreshMnuButtons()
{
try {
mnuBtn1.setEnabled(enableBtn1);
mnuBtn2.setEnabled(enableBtn2);
mnuBtn3.setEnabled(enableBtn3);
mnuBtn4.setEnabled(enableBtn4);
mnuBtn5.setEnabled(enableBtn5);
}
catch(Exception e) {Toast.makeText(this, "Exception" ,Toast.LENGTH_SHORT).show(); }
}
}
여기 내 XML이다 : 나는 코드에 의해 그래픽 요소의 대부분을 생성하기 위해 노력하고 있습니다.
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="false"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="44dp" >
<ScrollView
android:id="@+id/scrollView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<TableLayout
android:id="@+id/ladderSheet"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
</TableLayout>
</ScrollView>
</RelativeLayout>
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true" >
<HorizontalScrollView
android:id="@+id/horizontalScrollView1"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<TableLayout
android:id="@+id/tblToolbar"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:scrollbarStyle="outsideInset"
android:scrollbars="horizontal" >
</TableLayout>
</HorizontalScrollView>
</RelativeLayout>
</RelativeLayout>
미리 감사드립니다.
당신의 로그 캣 오류를 게시하시기 바랍니다. – Sam
나는 어딘가에 널 포인터 예외를 추측하고있다. 하지만 @ 샘이 말했듯이, logcat 오류 – gaara87