2012-02-29 7 views
-1

javaは多重継承をサポートしていないので、これを動作させるには問題があります。ListActivityとAsyncTaskの両方を拡張できません

これは私が何をしたいです:

public class CallForwardActivity extends ListActivity /* This is there I want to extend AsyncTask */ implements OnSharedPreferenceChangeListener 
{ 

... // creating and initializing stuff 

@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 

    userInfo = this.getSharedPreferences(USERINFO_FILE, 0); 
    userInfo.registerOnSharedPreferenceChangeListener(this); 
    userControl = new UserController(context); 
    ListView lv = getListView(); 
    lv.setTextFilterEnabled(true); 
    //setListAdapter(new ArrayAdapter<String>(this, R.layout.callforward_items, R.id.callforward_item_text, callforwardLabels)); 

    list = new ArrayList<HashMap<String,String>>(); 

    callForwardList = new SimpleAdapter( 
      this, 
      list, 
      R.layout.callforward_items, 
      new String[] { "line1","line2" }, 
      new int[] { R.id.callforward_item_text, R.id.callforward_number }); 



    populateList(); 
    setListAdapter(callForwardList); 

    lv.setOnItemClickListener(new OnItemClickListener() { 

    public void onItemClick(AdapterView<?> parent, View view, int position, long id) 
    { 
     CustomDialog(); // this will make the asynchronous task call if the user presses "OK" within the dialog box. 
    } 

    }); 

} 

は、どのように私はAsyncTaskを延長せずにコールを非同期になって行くのですか?

答えて

4

AsyncTaskを拡張する別のクラスを作成し、ListActivityで使用してください。あなたが好きなら、あなたはそれを内側にすることができます。お役に立てれば。

1

errrmmm .... Javaで2つのクラスを拡張することはできません。多くのインターフェイスを実装できますが、1つのクラスを拡張できます。 AsyncTask < ..、..、..>を拡張してそこにあなたのバックグラウンドジョブを拡張する別のsay内部クラスを作成する必要があります。 asynctaskは、バックグラウンド・プロセスのために使用されている

あなたがasynctaskを拡張アクティビティを使用しようとしているユースケースでどのようなJavaの http://java.sys-con.com/node/37748

0

における多重継承の詳細、Acitivityコンポーネントは、UI

を提供するために使用されますがありますUIThreadはBackgroundThreadを拡張しようとしています。つまり、'UIThread is-a BackgroundThread'のような関係を作っています。

あなたのユースケースを解決する別の方法があると思います。

関連する問題