1
public class UploadToServer extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_upload_to_server);

    uploadButton = (Button)findViewById(R.id.uploadButton);
    messageText  = (TextView)findViewById(R.id.messageText);

      up= new Upload(this);

     uploadButton.setOnClickListener(new OnClickListener() {            
          @Override
         public void onClick(View v) {

             dialog = ProgressDialog.show(UploadToServer.this, "", "Uploading file...",     true);

              new Thread(new Runnable() {
                    public void run() {
                         runOnUiThread(new Runnable() {
                                public void run() {
                                    messageText.setText("uploading started.....");
                                }
                            });                      

                      up.uploadFile(uploadFilePath);


                    }
                  }).start();        
            }



        });

上記のクラスのダイアログにアクセスして toast を表示するには、UPLOAD.ineed という別のクラスからこのクラスの ui にアクセスする必要があります。どうすればこれを行うことができますか.plzは私を助けます

        public class Upload   {       
        public Upload(UploadToServer context) {
    context=context;}
            context.runOnUiThread(new Runnable() {public void run() {
                            String msg = "yes";

                            context.messageText.setText(msg);
                           Toast.makeText(context, "File Upload Complete.", 
                                        Toast.LENGTH_SHORT).show();
                            }
                         });                                                                                         }

それが私が試したものです。OKです。私がやりたいのはトーストを印刷することだけです。しかし、これを真実にすると、NULPOINT例外が発生します

4

3 に答える 3

1

Activity のインスタンスを他のクラスに渡すことができ、そこからそのアクティビティ インスタンスを使用して、元のアクティビティで showMyToast() メソッドを呼び出すことができます。

class MyActivity extends Activity{

// activity methods etc..

public void showMyToast(String message){
runOnUiThread(new Runnable() {

            @Override
            public void run() {
                // write code to show toast
                  Toast.makeText(getApplicationContext(), message,Toast.LENGTH_LONG).show();
            }

        });


}

class MyOtherClass{
MyActivity myActivity;

MyOtherClass(MyActivity myActivity){
       this.myActivity=myActivity;

}

// To call the showMyToast() of Activiy do like this:
// myActivity.showMyToast("This is a toast");

}
于 2013-07-24T09:37:41.067 に答える
0

次に、UI要素の参照をJavaクラスに渡すだけですか? コンストラクターまたはセッターを使用します。

例: up= new Upload(this, uploadButton, messageText);

次に、オブジェクトで更新を行います

于 2013-07-24T09:32:31.487 に答える
0

最初に、アクティビティ コンテキストのインスタンスを非アクティビティ クラスに渡す必要があります。このコンテキストを使用して、UI コンポーネントにアクセスできます。次に、これを実装できます

yourContextObject.runOnUiThread(new Runnable() {
    public void run()
    {
        Toast.makeText(yourContextObject, "some text",Toast.LENGTH_LONG).show();
    }
});
于 2013-07-24T09:34:05.620 に答える