android - threads - 在Thread中创建按钮

时间:2014-05-03 12:37:59

标签: java android eclipse

我需要在活动中添加一个按钮。

问题是这样做的功能是在线程中,所以当我使用"这个"用于向活动添加按钮的关键字,应用程序崩溃。

调用线程代码:

public void Favourites_Tab_Click(Menu menu , View view)
 {
  setContentView(R.layout.default_layout_tab);
  new Thread(new Create_Button_On_Favourite_Activity()).start();
 }
  • 点击itam时调用的Favourites_Tab_Click方法

线程代码:

@SuppressLint("NewApi")
public void Create_New_Contact_Buttons(final String Text_View_Object , String Text_View_Subject , int Text_Font_Size , int Text_Color  , int Back_Ground_Color , int Contact_ID)
 {
  final TextView Text_View_Display=new Button(getApplicationContext());

  Text_View_Display.setText(Text_View_Object+"/"+Text_View_Subject);
  Text_View_Display.setTextColor(Text_Color);

  Text_View_Display.setTextSize(Text_Font_Size);

  if(Contact_ID != 0)
   {
    Text_View_Display.setId(Contact_ID);

    Text_View_Display.setOnClickListener(new View.OnClickListener()
     {
      @Override
      public void onClick(View v)
       {
        String text = Text_View_Object.toString();//Text_View_Display_ID.getText().toString()
        if(text != "")
         {
          Messages_Tab_Click(null, v);
          Intent Sessions_Activity = new Intent(Text_View_Display.getContext(), Sessions_Activity.class);
          startActivity(Sessions_Activity);
         }
       }
     });
   }
  this.addContentView(Text_View_Display, new LinearLayout.LayoutParams(768, 50));
 }

那我该如何解决呢?

1 个答案:

答案 0 :(得分:0)

当您处于Thread this的实例时,将引用该实例。您需要Activity的实例。

使用以下命令访问您的活动实例:

YourActivityName.this.addContentView(Text_View_Display, new LinearLayout.LayoutParams(768, 50));

请注意,从非UI线程添加按钮通常不是一个好习惯(甚至很难这样做)。看一下AsyncTask课程。在onPostExecute()方法中,您可以创建并放置按钮。