2012-11-13 97 views
-1

我正在創造一些實用的按鈕。使用來自2個不同活動的相同代碼,按鈕觸發不適用於其中一項活動。對於我必須忽略的東西,我有點困惑。OnClickListener未觸發

public class Home_Page_Activity extends Activity { 

JSONArray nameArray; 
JSONArray valArray; 
String[] arrayButtonTitles; 
String font; 
Context context = null; 
LinearLayout.LayoutParams params_textview; 
LinearLayout.LayoutParams params_button; 
LinearLayout.LayoutParams params_linearlayout; 
LinearLayout home_page_layout; 
OnClickListener myListener; 
Typeface face; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.home_page_activity); 
    WebView wv_Welcome_Message = (WebView) findViewById(R.id.wv_Welcome_Message); 

    context = getApplicationContext(); 
    params_linearlayout = new LinearLayout.LayoutParams(
      LinearLayout.LayoutParams.MATCH_PARENT, 
      LinearLayout.LayoutParams.WRAP_CONTENT, 1.0f); 
    params_linearlayout.gravity = Gravity.CENTER; 
    // Set Font 
    font = "fonts/aescrawl.ttf"; 
    face = Typeface.createFromAsset(getAssets(), font); 

    // Reference Layout 
    home_page_layout = (LinearLayout) findViewById(R.id.home_page_layout); 

    // Set Layout Parameters for XML Elements. (Height, Width, 
    // Weight,Padding) 
    params_button = new LinearLayout.LayoutParams(
      LinearLayout.LayoutParams.MATCH_PARENT, 32, 1.0f); 
    params_button.setMargins(10, 0, 10, 30); 

    // Load webview if there is connectivity 
    if (Repeatables.isNetworkAvailable(context) == true) { 
     new InitTask().execute(); 
    } else { 
     wv_Welcome_Message.setVisibility(View.GONE); 
    } 

    String[] arrayButtonTitles = { "Sub 1", "Sub 2", "Final 1", "Final 2", 
      "Category 5", "Category 6", "Category 7", "Category 8", 
      "Category 9", "Category 10" }; 
    Load_Main_Menu(arrayButtonTitles); 

myListener = new OnClickListener() { 
      public void onClick(View v) { 
      Object tag = v.getTag(); 
      // Do something depending on the value of the tag 

       Log.e("TAG","Button "+tag+" pushed"); 
       if("0".equals(tag.toString())){ 
        Log.e("TAG","Hello 1"); 
       }else if("21".equals(tag.toString())){ 
        Intent i = new Intent(getApplicationContext(), Sub_Menu_Categories_Main_Activity.class); 
        i.putExtra("whatSubMenuToLoad","none"); 
        i.putExtra("whatScreenTypeToLoad","FINALCATEGORY"); 
        i.putExtra("categoryId","313"); 
        startActivity(i); 
       } 
      } 
     }; 

} 

// Build Home Page XML Layout 
public void Load_Main_Menu(String[] buttons) { 

    arrayButtonTitles = buttons; 
    int numberOfButtons = arrayButtonTitles.length; 
    LinearLayout[] ll = new LinearLayout[numberOfButtons]; 

    // Add Elements to Layout 
    for (int i = 0; i < numberOfButtons; i++) { 

     Button btn = new Button(this); 
     btn.setText(arrayButtonTitles[i]); 
     btn.setTag(i); 
     btn.setOnClickListener(myListener); 
     btn.setTypeface(face); 
     btn.setTextSize(18); 
     btn.setTextColor(context.getResources().getColor(
       R.color.all_button_font_color)); 
     btn.setBackgroundResource(R.drawable.category_button_background_shape); 
     if (i % 2 == 0) { 
      ll[i] = new LinearLayout(this); 
      ll[i].setOrientation(LinearLayout.HORIZONTAL); 
      ll[i].addView(btn, params_button); 
      home_page_layout.addView(ll[i], params_linearlayout); 
     } else { 
      ll[i - 1].addView(btn, params_button); 
     } 
    } 
} 
} 
+0

增加了我對myListener的代碼。留下來對不起 – Rick

回答

3

您還沒有初始化myListener,沒有什麼火...哎呀:)

+0

對不起,我把它留在了上面,我在那裏。不好編輯它 – Rick

+0

好的,在調用'Load_Main_Menu()'之前初始化你的監聽器,並且你應該給'onClick()'方法增加'@ Override'。 – Sam

+0

偉大的,做到了。學過的知識。我會認爲按鈕必須先創建。謝謝 – Rick