2015-12-18 29 views
-2

我是新手到Android應用程序編程。 我buidling android應用程序聯繫人列表有Listview。發生在這條線 錯誤 outputText.setText(output); username.java編碼是here`使用setText的Android ContactList應用程序錯誤ListView

package com.letmedrive; 
import com.letmedrive.util.SystemUiHider; 
import android.annotation.TargetApi; 
import android.app.Activity; 
import android.os.Build; 
import android.os.Bundle; 
import android.os.Handler; 
import android.view.MotionEvent; 
import android.view.View; 
import android.content.ContentResolver; 
import android.database.Cursor; 
import android.net.Uri; 
import android.provider.ContactsContract; 
import android.widget.ListView; 
/** 
* An example full-screen activity that shows and hides the system UI (i.e. 
* status bar and navigation/system bar) with user interaction. 
* 
* @see SystemUiHider 
*/ 





public class Username extends Activity { 
public ListView outputText; 

/** 
* Whether or not the system UI should be auto-hidden after 
* {@link #AUTO_HIDE_DELAY_MILLIS} milliseconds. 
*/ 
private static final boolean AUTO_HIDE = true; 

/** 
* If {@link #AUTO_HIDE} is set, the number of milliseconds to wait after 
* user interaction before hiding the system UI. 
*/ 
private static final int AUTO_HIDE_DELAY_MILLIS = 3000; 

/** 
* If set, will toggle the system UI visibility upon interaction. Otherwise, 
* will show the system UI visibility upon interaction. 
*/ 
private static final boolean TOGGLE_ON_CLICK = true; 

/** 
* The flags to pass to {@link SystemUiHider#getInstance}. 
*/ 
private static final int HIDER_FLAGS = SystemUiHider.FLAG_HIDE_NAVIGATION; 

/** 
* The instance of the {@link SystemUiHider} for this activity. 
*/ 
private SystemUiHider mSystemUiHider; 

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

    setContentView(R.layout.activity_username); 
    ListView outputText = (ListView) findViewById(R.id.listView); 

    fetchcontacts(); 

    final View controlsView = findViewById(R.id.fullscreen_content_controls); 
    final View contentView = findViewById(R.id.fullscreen_content); 

    // Set up an instance of SystemUiHider to control the system UI for 
    // this activity. 
    mSystemUiHider = SystemUiHider.getInstance(this, contentView, HIDER_FLAGS); 
    mSystemUiHider.setup(); 
    mSystemUiHider 
      .setOnVisibilityChangeListener(new SystemUiHider.OnVisibilityChangeListener() { 
       // Cached values. 
       int mControlsHeight; 
       int mShortAnimTime; 

       @Override 
       @TargetApi(Build.VERSION_CODES.HONEYCOMB_MR2) 
       public void onVisibilityChange(boolean visible) { 
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2) { 
         // If the ViewPropertyAnimator API is available 
         // (Honeycomb MR2 and later), use it to animate the 
         // in-layout UI controls at the bottom of the 
         // screen. 
         if (mControlsHeight == 0) { 
          mControlsHeight = controlsView.getHeight(); 
         } 
         if (mShortAnimTime == 0) { 
          mShortAnimTime = getResources().getInteger(
            android.R.integer.config_shortAnimTime); 
         } 
         controlsView.animate() 
           .translationY(visible ? 0 : mControlsHeight) 
           .setDuration(mShortAnimTime); 
        } else { 
         // If the ViewPropertyAnimator APIs aren't 
         // available, simply show or hide the in-layout UI 
         // controls. 
         controlsView.setVisibility(visible ? View.VISIBLE : View.GONE); 
        } 

        if (visible && AUTO_HIDE) { 
         // Schedule a hide(). 
         delayedHide(AUTO_HIDE_DELAY_MILLIS); 
        } 
       } 
      }); 

    // Set up the user interaction to manually show or hide the system UI. 
    contentView.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      if (TOGGLE_ON_CLICK) { 
       mSystemUiHider.toggle(); 
      } else { 
       mSystemUiHider.show(); 
      } 
     } 
    }); 

    // Upon interacting with UI controls, delay any scheduled hide() 
    // operations to prevent the jarring behavior of controls going away 
    // while interacting with the UI. 
    findViewById(R.id.dummy_button).setOnTouchListener(mDelayHideTouchListener); 
} 
public void fetchcontacts() { 
    String phonenumber = null; 
    String email = null; 
    Uri CONTENT_URI = ContactsContract.Contacts.CONTENT_URI; 
    String _ID = ContactsContract.Contacts._ID; 
    String DISPLAY_NAME = ContactsContract.Contacts.DISPLAY_NAME; 
    String HAS_PHONE_NUMBER = ContactsContract.Contacts.HAS_PHONE_NUMBER; 
    Uri PhoneCONTENT_URI = ContactsContract.CommonDataKinds.Phone.CONTENT_URI; 
    String Phone_CONTACT_ID = ContactsContract.CommonDataKinds.Phone.CONTACT_ID; 
    String NUMBER = ContactsContract.CommonDataKinds.Phone.NUMBER; 
    Uri EmailCONTENT_URI = ContactsContract.CommonDataKinds.Email.CONTENT_URI; 
    String EmailCONTACT_ID = ContactsContract.CommonDataKinds.Email.CONTACT_ID; 
    String DATA = ContactsContract.CommonDataKinds.Email.DATA; 

    StringBuffer output = new StringBuffer(); 
    ContentResolver contentResolver = getContentResolver(); 
    Cursor cursor = contentResolver.query(CONTENT_URI,null,null,null,null); 
    //Loop for every contact in the phone 
    if(cursor.getCount() > 0) { 
     while (cursor.moveToNext()) { 
      String contact_id = cursor.getString(cursor.getColumnIndex(_ID)); 
      String name = cursor.getString(cursor.getColumnIndex(DISPLAY_NAME)); 
      int hasPhoneNumber = Integer.parseInt(cursor.getString(cursor.getColumnIndex(HAS_PHONE_NUMBER))); 
      if (hasPhoneNumber > 0) { 
       output.append("\n First Name:" + name); 
       // Query and loop for every phone number of the contact 
       Cursor phoneCursor = contentResolver.query(PhoneCONTENT_URI,null,Phone_CONTACT_ID + " = ", new String[] { contact_id},null); 
       while (phoneCursor.moveToNext()) { 
        phonenumber = phoneCursor.getString(phoneCursor.getColumnIndex(NUMBER)); 
        output.append("\n Phone number:" + phonenumber); 
       } 
       phoneCursor.close(); 


      } 
      output.append("\n"); 
     } 
     outputText.setText(output); 
    } 
} 
@Override 
protected void onPostCreate(Bundle savedInstanceState) { 
    super.onPostCreate(savedInstanceState); 

    // Trigger the initial hide() shortly after the activity has been 
    // created, to briefly hint to the user that UI controls 
    // are available. 
    delayedHide(100); 
} 


/** 
* Touch listener to use for in-layout UI controls to delay hiding the 
* system UI. This is to prevent the jarring behavior of controls going away 
* while interacting with activity UI. 
*/ 
View.OnTouchListener mDelayHideTouchListener = new View.OnTouchListener() { 
    @Override 
    public boolean onTouch(View view, MotionEvent motionEvent) { 
     if (AUTO_HIDE) { 
      delayedHide(AUTO_HIDE_DELAY_MILLIS); 
     } 
     return false; 
    } 
}; 

Handler mHideHandler = new Handler(); 
Runnable mHideRunnable = new Runnable() { 
    @Override 
    public void run() { 
     mSystemUiHider.hide(); 
    } 
}; 

/** 
* Schedules a call to hide() in [delay] milliseconds, canceling any 
* previously scheduled calls. 
*/ 
private void delayedHide(int delayMillis) { 
    mHideHandler.removeCallbacks(mHideRunnable); 
    mHideHandler.postDelayed(mHideRunnable, delayMillis); 
} 
} 
+0

請添加LogCat輸出。 – 2Dee

+0

它的太久不能pbe升級 –

+0

我強烈建議你閱讀一本關於Java基礎知識的書籍,這樣你就可以學習如何讀取堆棧跟蹤並解釋編譯器向你展示的錯誤。然後繼續閱讀關於Android開發的另一本書。在網絡上避免快速,骯髒和過時的教程,並且不要急於執行,如果你這樣做,最終你不會理解你正面臨的錯誤... – 2Dee

回答

1

有爲ListView對象沒有setText()方法,所以outputText.setText()將拋出異常沿method setText not supported for class ListView行。

也許你正在將文本設置爲錯誤的對象,或者你的意思是使用Adapter來代替?答案就是需要更多的項目知識。如果您只想顯示一個大字符串,請使用TextView對象而不是ListView

+0

如何在相對支持列表視圖中更正settext –

+0

您可以查看ArrayAdapter並使用String數組來顯示行上的每個項目,也可以用TextView對象替換它並調用'textView.setText()'到顯示信息。 – AdamMc331

+0

@balramrexwal這篇文章使用了資源中的字符串數組,但是您可以將相同的適配器邏輯應用於您自己生成的數組:http://stackoverflow.com/questions/2453989/help-in-getting-string-array -from-arrays-xml-file – AdamMc331