2014-05-24 51 views
-1

剛剛開始使用Android開發,我無法弄清楚爲什麼這不起作用。下面是我得到(粗體塊報價前最後一行)錯誤:setOnclickListener請按鈕幫助

package com.ample.ballv2; 

    import java.util.Random; 

    import android.support.v7.app.ActionBarActivity; 
    import android.support.v7.app.ActionBar; 
    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.View.OnClickListener; 
    import android.view.ViewGroup; 
    import android.widget.Button; 
    import android.widget.Toast; 
    import android.os.Build; 

    public class MainActivity extends ActionBarActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    if (savedInstanceState == null) { 
     getSupportFragmentManager().beginTransaction() 
       .add(R.id.container, new PlaceholderFragment()).commit(); 
    } 
    Button answer = (Button) findViewById(R.id.answerbutton); 
    answer.setOnClickListener(answerL); 
} 
private OnClickListener answerL = new OnclickListener(){ 
public void onClick(view v) { 
Random token = random(); 
int tokenno = token.nextInt(10); 
CharSequence ans = ""; 
switch(tokenno) 
{case 0:ans=getString(R.string.msg0);break; 
case 1: ans=getString(R.string.msg1);break; 
case 2: ans=getString(R.string.msg2);break; 
case 3: ans=getString(R.string.msg3);break; 
case 4: ans=getString(R.string.msg4);break; 
case 5: ans=getString(R.string.msg5);break; 
case 6: ans=getString(R.string.msg6);break; 
case 7: ans=getString(R.string.msg7);break; 
case 8: ans=getString(R.string.msg8);break; 
case 9: ans=getString(R.string.msg9);break; 
case 10:ans=getString(R.string.msg10);break; 

} 
Context context = getApplicationContext(); 
Toast msg = Toast.makeText(context,ans,Toast.LENGTH_LONG); 
msg.show(); 
} 
}//error's popping up here 

>描述資源路徑位置類型 語法錯誤,插入「;」完成FieldDeclaration MainActivity.java/8ballv2/src目錄/ COM /充分/ ballv2線56的Java問題

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

} 
+0

看起來你錯過了'MainActivity.java'的第56行的分號。 – Emmanuel

+0

你試過插入';'那裏? '}'之後。因爲如果OnClickListener不是匿名類型,它會是這樣的:private OnClickListener answerL = new OnclickListener();並且你有私人的OnClickListener answerL =新的OnclickListener(){...} //這裏沒有 –

+0

我試着刪除}並添加;事實上,當我發現更多的錯誤出現時,似乎沒有什麼工作 – TheNeverLander

回答

0

只是因爲它說你需要插入一個分號,因爲有你在這裏聲明的字段。因此,這是應該的

private OnClickListener answerL = new OnclickListener(){ 
    public void onClick(view v) { 
    ............... 
    }//onClick ends here 
}; //OnClickListener ends here 
1

嗯,我想在IDE中代碼和問題 - 提供樣品 - 在變量聲明:

private OnClickListener answerL = new OnClickListener(){ 
    public void onClick(view v) { 
      Random token = random(); 
      int tokenno = token.nextInt(10); 
      CharSequence ans = ""; 
      switch(tokenno) { 
       case 0:ans=getString(R.string.msg0);break; 
       case 1: ans=getString(R.string.msg1);break; 
       case 2: ans=getString(R.string.msg2);break; 
       case 3: ans=getString(R.string.msg3);break; 
       case 4: ans=getString(R.string.msg4);break; 
       case 5: ans=getString(R.string.msg5);break; 
       case 6: ans=getString(R.string.msg6);break; 
       case 7: ans=getString(R.string.msg7);break; 
       case 8: ans=getString(R.string.msg8);break; 
       case 9: ans=getString(R.string.msg9);break; 
       case 10:ans=getString(R.string.msg10);break; 
      } 
      Context context = getApplicationContext(); 
      Toast msg = Toast.makeText(context,ans,Toast.LENGTH_LONG); 
      msg.show(); 
     } 
}//here should be ';' 

這是因爲View.OnClickListener具有體與方法。如果沒有方法(例如,您創建了一個

私有類MyOnClickListener實現OnClickListener

http://developer.android.com/reference/android/view/View.OnClickListener.html) 那麼這將是這樣的:

private MyOnClickListener answerL = new MyOnClickListener(); //<- semicolon here. 

就可以避免這樣的未來會使用自動配置工具(在Android/Studio中使用ctrl + shift + f作爲Eclipse/ADT和ctrl + alt + l中的默認值)或者在方法之前/之後嚴格聲明類字段

希望它可以幫助)

0

OnclickListenerinterface,你應該創建它的對象是這樣的:

private OnClickListener answerL = new OnclickListener(){ 
    public void onClick(view v) { 
     //do stuffs here 
    } 
}; 

請注意semi-colon末。