2012-05-01 35 views
6

Tôi đang phải đối mặt với một vấn đề về thiết lập các văn bản để TextView trong android mã của tôi là:Làm cách nào để đặt văn bản của TextView?

public class Main extends Activity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     Button button = (Button) findViewById(R.id.button1); 
     final TextView text = (TextView) findViewById(R.id.textView1); 
     final EditText input = (EditText) findViewById(R.id.editText1); 
     final String string = input.getText(); 
     button.setOnClickListener(new OnClickListener() { 

      public void onClick(View v) { 
       text.setText(string);     
      } 
     }); 
    } 
} 

nếu tôi viết

final Editable string = input.getText(); 

sau đó nó hoạt động ..... !!!!

Bây giờ tôi muốn gửi dữ liệu của EditText để tiếp Activity như thế này:

public class Main extends Activity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     Button button = (Button) findViewById(R.id.button1); 
     final TextView text = (TextView) findViewById(R.id.textView1); 
     final EditText input = (EditText) findViewById(R.id.editText1); 
     final Editable string = input.getText(); 
     button.setOnClickListener(new OnClickListener() { 

      public void onClick(View v) { 
       Intent intent = new Intent(Main.this, Second.class); 
       intent.putExtra("thetext", string); 
       startActivity(intent); 
      } 
     }); 
    } 
} 

và trong Second.java lớp tôi nhận được StringExtra theo cách này:

public class Second extends Activity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.second); 

     TextView text = (TextView) findViewById(R.id.textView2); 
     String string = getIntent().getExtras().getString("thetext", "not found"); 
     text.setText(string); /// Here the text is not shown but the default message "not found" is set to `TextView` 
    } 
} 

Xin vui lòng cho tôi cách để tiến hành phát triển.

Trả lời

3

Tôi nghĩ rằng vấn đề là bạn đang thực sự đặt "Có thể chỉnh sửa" vào mục đích chứ không phải là Chuỗi. Mặc dù gần gũi, chúng không giống nhau. Nếu bạn toString() có thể chỉnh sửa của bạn để có được một đối tượng String và đặt nó trong mục đích, bạn sẽ có thể làm cho nó trở lại với getString như bạn đang làm.

+0

nhờ Brayden đó là vấn đề tôi qua đến nó ... –

5

Có vấn đề, bạn đang gửi Editable, chứ không phải String. Hãy thử điều này:

final String string = input.getText().toString(); 
1

thử một cái gì đó như thế này:

public class Main extends Activity { 
    EditText input; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     TextView text = (TextView) findViewById(R.id.textView1); 
     input = (EditText) findViewById(R.id.editText1); 

     Button button = (Button) findViewById(R.id.button1); 
     button.setOnClickListener(new OnClickListener() { 
      public void onClick(View v) { 
       Intent intent = new Intent(Main.this, Second.class); 
       intent.putExtra("thetext", input.getText().toString()); 
       startActivity(intent); 
      } 
     }); 
    } 
} 

(Gợi ý: Cách dễ nhất để gửi mã là để dán mã của bạn, chọn nó, và sử dụng Crtl + k để thụt/định dạng nó .)

0

Theo tài liệu android, tên của chuỗi được đưa vào phần bổ sung phải bao gồm tiền tố gói ... tức là som.arshay.dev.thetext Thứ hai, getExtras() trả về một gói, không phải là gì bạn đã thêm. Bạn cần getStringExtra(name)

0

Trong dòng này sử dụng

final String string = input.getText().toString(); 

thay vì

final String string = input.getText(); 
2
 private TextView mTextView; 
    private String mString; 

mTextView = (TextView) findViewById(R.id.tv); 
mString = "hello everyone ! how r u?"; 
mTextView.setText(mString); 
Các vấn đề liên quan