2013-07-27 31 views
22

tôi đã được đề nghị để mở rộng lớp Hoạt động của tôi từ ActionBarActivitygetSupportActionBar() Phương thức getSupportActionBar() không được định nghĩa cho kiểu TaskActivity. Tại sao?

Đây là mã theo thời gian:

import android.support.v7.app.ActionBar; 
import android.support.v7.app.ActionBarActivity; 

public class MainActivity extends Activity { 

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

tôi đã viết ứng dụng mới và làm theo lời khuyên.

import android.os.Bundle; 
    import android.support.v7.app.ActionBar; 
    import android.support.v7.app.ActionBarActivity;    

    public class MainActivity extends ActionBarActivity { 

      @Override 
      public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      ActionBar actionBar =getSupportActionBar(); 
      actionBar.setDisplayHomeAsUpEnabled(true);    
      setContentView(R.layout.activity_main); 
      } 

      @Override 
      public boolean onCreateOptionsMenu(Menu menu) { 
      getMenuInflater().inflate(R.menu.main, menu); 
      return true; 
      }    
     } 

Nếu tôi sử dụng ACtionBarActivity thay vì hoạt động, tôi nhận được thông báo lỗi sau trên điện thoại, khi tôi cố gắng chạy nó:

Phương pháp getSupportActionBar() là undefined cho các loại TaskActivity

Trả lời

1

Đây là câu trả lời cho câu hỏi của tôi. Tôi đã hỏi lại với một số nhận xét. How to add support libraries?

+6

Điều đó có làm cho câu hỏi này trùng lặp không? –

71

Lớp học của bạn cần gia hạn từ ActionBarActivity, thay vì một đồng bằng Activity để sử dụng các phương pháp getSupport*().

Cập nhật [2015/04/23]: Với the release of Android Support Library 22.1, bạn nên bây giờ mở rộng AppCompatActivity. Ngoài ra, bạn không còn để mở rộng ActionBarActivity hay AppCompatActivity, như bây giờ bạn có thể kết hợp một thể hiện AppCompatDelegate trong bất kỳ hoạt động.

+2

đã giúp tôi hôm nay :) –

+0

câu trả lời tuyệt vời, cảm ơn bạn –

+0

@MH có nhưng tại sao? –

5

Tôi tin rằng đây là giải pháp khác mà bạn có thể đã sử dụng. Nó đang làm việc trong ứng dụng của tôi.

 @Override 
     public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     Android.support.v7.app.ActionBar actionBar =getSupportActionBar(); 
     actionBar.setDisplayHomeAsUpEnabled(true);    
     setContentView(R.layout.activity_main) 

Sau đó, bạn có thể loại bỏ việc nhập đó để sử dụng ActionBar một dòng.

+0

Cảm ơn rất nhiều, nhưng tôi đã giải quyết được vấn đề của mình. Tôi đã đọc về việc thêm thư viện hỗ trợ. –

2

Nếu bạn đã kéo dài từ ActionBarActivity và bạn đang cố gắng để có được thanh hành động từ một đoạn:

ActionBar mActionBar = (ActionBarActivity)getActivity()).getSupportActionBar(); 
2

Nếu bạn đang kéo dài từ một AppCompatActivity và đang cố gắng để có được những ActionBar từ Fragment, bạn có thể làm điều này:

ActionBar mActionBar = ((AppCompatActivity) getActivity()).getSupportActionBar(); 
0

Bạn phải thay đổi kéo dài Hoạt động để mở rộng AppCompactActivity sau đó cố gắng thiết lập và getSupportActionBar()

Các vấn đề liên quan