綁定帳號登入

Android 台灣中文網

打印 上一主題 下一主題

[求助] intent數值過去閃退?

[複製連結] 查看: 4768|回覆: 23|好評: 0
跳轉到指定樓層
gn02526721 | 收聽TA | 只看該作者 回帖獎勵 |正序瀏覽 |閱讀模式
發表於 2013-11-10 23:25
10碎鑽
本帖最後由 gn02526721 於 2013-11-10 23:38 編輯

public void onItemClick(AdapterView<?> parent, View view,
            int position, long id) {
          // TODO Auto-generated method stub
          listitemname=listtoread.getItemAtPosition(position).toString();
          itemintent=listitemname.substring(6,listitemname.length()-1);
            }}
          Wink;
因為我發現在點擊之後給定的名字會出現{name=XXX}這個樣子
所以我設定了抓取特定的字串來弄

readitem.setOnClickListener(new OnClickListener(){

        @Override
        public void onClick(View v) {
          // TODO Auto-generated method stub
          Intent intent=new Intent();
          intent.setClass(readchoose.this, read.class);
          intent.putExtra("itemname", itemintent);
          startActivity(intent);
            }});

上面這是Intent的部分
我不大了解數值切換過去之後為何會閃退
我另外附上切換過去的JAVA檔吧

package com.example.LockInBrain;

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;

import android.net.Uri;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;

public class additem extends Activity {
        String addp,namep;
        TextView picuri=(TextView)findViewById(R.id.picuri);
        ImageView pic= (ImageView)findViewById(R.id.addpic);
        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.additem);
               
                Intent intent = this.getIntent();
                //取得傳遞過來的資料  
                final String itemname = intent.getStringExtra("itemname");  
               
                ImageButton choosepic=(ImageButton) findViewById(R.id.choosepic);
                ImageButton addinto=(ImageButton) findViewById(R.id.addinto);
                final EditText picname=(EditText) findViewById(R.id.picname);
               
                picname.setText(itemname);
               
                choosepic.setOnClickListener(new OnClickListener(){

                        @Override
                        public void onClick(View v) {
                                // TODO Auto-generated method stub
                                Intent intentpic = new Intent();  
                /* 开启Pictures画面Type设定为image */  
                intentpic.setType("image/*");  
                /* 使用Intent.ACTION_GET_CONTENT这个Action */  
                intentpic.setAction(Intent.ACTION_GET_CONTENT);   
                /* 取得相片后返回本画面 */
                startActivityForResult(intentpic, 1);  
                        }});
               
                addinto.setOnClickListener(new OnClickListener(){

                        @Override
                        public void onClick(View v) {
                                // TODO Auto-generated method stub
                                String s2=picuri.getText().toString();
                                String s1=addp;
                                try{
                                FileWriter fw = new FileWriter("/sdcard/"+itemname+".txt", false);
                                BufferedWriter bw = new BufferedWriter(fw); //將BufferedWeiter與FileWrite物件做連結
                                bw.write("""+s1+"",""+s2+""");
                                bw.newLine();
                                bw.close();
                            }catch(IOException e){
                               e.printStackTrace();
                            }
                        }});
               
        }

        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
               
                super.onActivityResult(requestCode, resultCode, data);
        // 有選擇檔案
        if ( resultCode == RESULT_OK )
        {   // 取得檔案的 Uri
            Uri uri = data.getData();
            if( uri != null )
            {   // 利用 Uri 顯示 ImageView 圖片
                pic.setImageURI( uri );
                picuri.setText( uri.toString() );
                addp=picuri.toString();
            }
            else
            {
                    picuri.setText("無效的檔案路徑 !!");
            }
        }
        else
        {
                picuri.setText("取消選擇檔案 !!");
        }
        }
       
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
                // Inflate the menu; this adds items to the action bar if it is present.
                getMenuInflater().inflate(R.menu.title, menu);
                return true;
        }

}

additem.java

3.32 KB, 下載次數: 1, 下載積分: 碎鑽 -1 個

「用Android 就來APK.TW」,快來加入粉絲吧!
Android 台灣中文網(APK.TW)
收藏收藏 分享分享 分享專題
用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

23
 樓主| gn02526721 | 收聽TA | 只看該作者
發表於 2013-11-13 22:06
私訊過去摟 麻煩看一下私人訊息那邊
我上傳到我的雲端了
用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

22
lkk47 | 收聽TA | 只看該作者
發表於 2013-11-13 00:40
如果方便的話把專案傳上來  讓我看看是什麼問題
用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

21
 樓主| gn02526721 | 收聽TA | 只看該作者
發表於 2013-11-12 23:15
本帖最後由 gn02526721 於 2013-11-12 23:39 編輯

各位大大 我又發現一個問題了
就是寫入的地方無法寫入檔案耶
我確認過寫入我要的檔案
卻發現寫入的檔案出現在最一開始的資料夾中
而且顯示出來都只有第一行
請問如何讓他能夠寫完第一次資料後跳到下一行再繼續寫入?
另外為什麼我明明是抓了EditText內的文字
卻出現圖片中第一段的文字?
用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

20
 樓主| gn02526721 | 收聽TA | 只看該作者
發表於 2013-11-12 11:20
iamjason008 發表於 2013-11-12 10:21
如果照lkk大所說的,
在30行也要做對應的修改,把final TextView拿掉
23 跟31也要做相同的修改 ...

都改好
而且沒問題了
用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

19
 樓主| gn02526721 | 收聽TA | 只看該作者
發表於 2013-11-12 11:19
lkk47 發表於 2013-11-12 09:53
我看到你程式有地方須修改  修改後試試看  因為你給的錯誤訊息不知道哪裡錯 你貼的程式碼  第22行TextView  ...

可以了
感謝你抓到重點
用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

18
iamjason008 | 收聽TA | 只看該作者
發表於 2013-11-12 10:21
如果照lkk大所說的,
在30行也要做對應的修改,把final TextView拿掉
23 跟31也要做相同的修改

評分

參與人數 1碎鑽 +1 幫助 +1 收起 理由
gn02526721 + 1 + 1 非常讚

查看全部評分

用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

17
 樓主| gn02526721 | 收聽TA | 只看該作者
發表於 2013-11-11 23:05
本帖最後由 gn02526721 於 2013-11-11 23:16 編輯

還是有問題
我利用Debug做測試
還是會閃退
以下是Debug跳出來的訊息

按圖鎖記 [Android Application]       
        DalvikVM[localhost:8642]       
                Thread [<1> main] (Suspended (exception RuntimeException))       
                        <VM does not provide monitor information>       
                        ActivityThread.performLaunchActivity(ActivityThread$ActivityClientRecord, Intent) line: 2137       
                        ActivityThread.handleLaunchActivity(ActivityThread$ActivityClientRecord, Intent) line: 2261       
                        ActivityThread.access$600(ActivityThread, ActivityThread$ActivityClientRecord, Intent) line: 141       
                        ActivityThread$H.handleMessage(Message) line: 1256       
                        ActivityThread$H(Handler).dispatchMessage(Message) line: 99       
                        Looper.loop() line: 137       
                        ActivityThread.main(String[]) line: 5103       
                        Method.invokeNative(Object, Object[], Class, Class[], Class, int, boolean) line: not available [native method]       
                        Method.invoke(Object, Object...) line: 525       
                        ZygoteInit$MethodAndArgsCaller.run() line: 737       
                        ZygoteInit.main(String[]) line: 553       
                        NativeStart.main(String[]) line: not available [native method]       
                Thread [<10> Binder_2] (Running)       
                Thread [<9> Binder_1] (Running)       


  1. package com.example.LockInBrain;

  2. import java.io.BufferedWriter;
  3. import java.io.FileWriter;
  4. import java.io.IOException;

  5. import android.net.Uri;
  6. import android.os.Bundle;
  7. import android.app.Activity;
  8. import android.content.Intent;
  9. import android.view.Menu;
  10. import android.view.View;
  11. import android.view.View.OnClickListener;
  12. import android.widget.Button;
  13. import android.widget.EditText;
  14. import android.widget.ImageButton;
  15. import android.widget.ImageView;
  16. import android.widget.TextView;

  17. public class additem extends Activity {
  18.         String addp,namep;
  19.         TextView picuri=(TextView)findViewById(R.id.picuri);
  20.         ImageView pic= (ImageView)findViewById(R.id.addpic);
  21.         @Override
  22.         protected void onCreate(Bundle savedInstanceState) {
  23.                 super.onCreate(savedInstanceState);
  24.                 setContentView(R.layout.additem);
  25.                 final String addp = null;
  26.                 String namep;
  27.                 final TextView picuri=(TextView)findViewById(R.id.picuri);
  28.                 ImageView pic= (ImageView)findViewById(R.id.addpic);
  29.                 //Intent intent = this.getIntent();
  30.                 Bundle bundle = this.getIntent().getExtras();
  31.                 //取得傳遞過來的資料  
  32.                 final String itemname = bundle.getString("itemname");  
  33.                
  34.                 ImageButton choosepic=(ImageButton) findViewById(R.id.choosepic);
  35.                 ImageButton addinto=(ImageButton) findViewById(R.id.addinto);
  36.                 final EditText picname=(EditText) findViewById(R.id.picname);
  37.                
  38.                 picname.setText(itemname);
  39.                
  40.                 choosepic.setOnClickListener(new OnClickListener(){

  41.                         @Override
  42.                         public void onClick(View v) {
  43.                                 // TODO Auto-generated method stub
  44.                                 Intent intentpic = new Intent();  
  45.                 /* 开启Pictures画面Type设定为image */  
  46.                 intentpic.setType("image/*");  
  47.                 /* 使用Intent.ACTION_GET_CONTENT这个Action */  
  48.                 intentpic.setAction(Intent.ACTION_GET_CONTENT);   
  49.                 /* 取得相片后返回本画面 */
  50.                 startActivityForResult(intentpic, 1);  
  51.                         }});
  52.                
  53.                 addinto.setOnClickListener(new OnClickListener(){

  54.                         @Override
  55.                         public void onClick(View v) {
  56.                                 // TODO Auto-generated method stub
  57.                                 String s2=picuri.getText().toString();
  58.                                 String s1=addp;
  59.                                 try{
  60.                                 FileWriter fw = new FileWriter("/sdcard/"+itemname+".txt", false);
  61.                                 BufferedWriter bw = new BufferedWriter(fw); //將BufferedWeiter與FileWrite物件做連結
  62.                                 bw.write("""+s1+"",""+s2+""");
  63.                                 bw.newLine();
  64.                                 bw.close();
  65.                             }catch(IOException e){
  66.                                e.printStackTrace();
  67.                             }
  68.                         }});
  69.                
  70.         }

  71.         protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  72.                
  73.                 super.onActivityResult(requestCode, resultCode, data);
  74.         // 有選擇檔案
  75.         if ( resultCode == RESULT_OK )
  76.         {   // 取得檔案的 Uri
  77.             Uri uri = data.getData();
  78.             if( uri != null )
  79.             {   // 利用 Uri 顯示 ImageView 圖片
  80.                 pic.setImageURI( uri );
  81.                 picuri.setText( uri.toString() );
  82.                 addp=picuri.toString();
  83.             }
  84.             else
  85.             {
  86.                     picuri.setText("無效的檔案路徑 !!");
  87.             }
  88.         }
  89.         else
  90.         {
  91.                 picuri.setText("取消選擇檔案 !!");
  92.         }
  93.         }
  94.        
  95.         @Override
  96.         public boolean onCreateOptionsMenu(Menu menu) {
  97.                 // Inflate the menu; this adds items to the action bar if it is present.
  98.                 getMenuInflater().inflate(R.menu.title, menu);
  99.                 return true;
  100.         }

  101. }
複製代碼


再次確認Manifast那邊 確定肯定有加上Activity

補充問題:這2個分頁分別是第2個分頁和第3個分頁

也就是說我從第1頁切到第2頁沒問題
但是從第2頁切到第3頁卻有問題
用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

16
lkk47 | 收聽TA | 只看該作者
發表於 2013-11-11 16:42
傳值建議使用這種方式
  1. A.class(傳送資料)

  2. ?
  3. 1
  4. 2
  5. 3
  6. 4
  7. 5
  8. 6
  9. 7
  10. 8
  11. 9
  12. 10
  13. 11
  14. 12
  15. 13
  16. 14
  17. //new一個intent物件,並指定Activity切換的class
  18. Intent intent = new Intent();
  19. intent.setClass(A.this,B.class);

  20. //new一個Bundle物件,並將要傳遞的資料傳入
  21. Bundle bundle = new Bundle();
  22. bundle.putDouble("age",age );//傳遞Double
  23. bundle.putString("name",name);//傳遞String

  24. //將Bundle物件傳給intent
  25. intent.putExtras(bundle);

  26. //切換Activity
  27. startActivity(intent);


  28. B.class(接收資料)

  29. ?
  30. 1
  31. 2
  32. 3
  33. Bundle bundle = getIntent().getExtras();  
  34. String name = bundle.getString("name");
  35. double age = bundle.getDouble("age");
複製代碼

評分

參與人數 1幫助 +1 收起 理由
bdpskuang + 1

查看全部評分

用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

15
iamjason008 | 收聽TA | 只看該作者
發表於 2013-11-11 16:34
A.class(傳送資料)

//new一個intent物件,並指定Activity切換的class
Intent intent = new Intent();
intent.setClass(A.this,B.class);

intent .putExtra("name",name);//可放所有基本類別

//切換Activity
startActivity(intent);

B.class(接收資料)
Intent intent = this.getIntent();
//取得傳遞過來的資料   
String name = intent.getStringExtra("name");


我看你寫的,送的時候是read.class
但是收的時候是additem 這個class

評分

參與人數 1碎鑽 +1 幫助 +1 收起 理由
gn02526721 + 1 + 1 很給力!

查看全部評分

用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

14
iamjason008 | 收聽TA | 只看該作者
發表於 2013-11-11 16:31
為啥存的時候是
          Intent intent=new Intent();
          intent.setClass(readchoose.this, read.class);
          intent.putExtra("itemname", itemintent);
          startActivity(intent);
取的時候會是在additem裡面啊?!

參考:http://cookiesp.pixnet.net/blog/post/84190702-android-intent%26bundle-%E5%82%B3%E9%81%9E%E8%B3%87%E6%96%99(%E5%8C%85%E5%90%AB%E5%82%B3%E9%81%9E%E8%87%AA%E5%AE%9A%E7%BE%A9%E7%89%A9
用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則