2017-06-14 229 views
0

嗨,大家好我是Android工作室的初学者,我想在按钮点击后在Android上做按钮功能 我试过打电话finish();,但它没有工作,导致它删除变量我已经在我的第一个活动触发Android按钮点击后退按钮功能

那是我第一次activiy(Mou3adal)代码:

final Button m1 = (Button) findViewById(R.id.m1); 
    m1.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      startActivity(new Intent(Mou3adal.this, Arabic.class)); 


     } 
    }); 




    try { 


       Bundle bundleba = getIntent().getExtras(); 
       double t1V = bundleba.getDouble("t1V"); 
       double f1_1V = bundleba.getDouble("f1_1V"); 
       double f2_1V = bundleba.getDouble("f2_1V"); 
       double i1V = bundleba.getDouble("i1V"); 
       double mou1V = bundleba.getDouble("mou1V"); 

       m1.setTextSize(15); 
       m1.setText(" ت:" + t1V + " ف:" + f1_1V + " ف:" + f2_1V + " إ:" + i1V + " م:" + mou1V); 

    } catch (Exception e) { 

     m1.setTextSize(25); 
     m1.setText(" إضغط لكتابة نقاطك"); 

    } 



    final Button m2 = (Button) findViewById(R.id.m2); 

    m2.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      startActivity(new Intent(Mou3adal.this, francais.class)); 
     } 
    }); 







     try { 



        Bundle bundlebf = getIntent().getExtras(); 
       double t2V = bundlebf.getDouble("t2V"); 
       double f1_2V = bundlebf.getDouble("f1_2V"); 
       double f2_2V = bundlebf.getDouble("f2_2V"); 
       double i2V = bundlebf.getDouble("i2V"); 
       double mou2V = bundlebf.getDouble("mou2V"); 

       m2.setTextSize(15); 
       m2.setText(" ت:" + t2V + " ف:" + f1_2V + " ف:" + f2_2V + " إ:" + i2V + " م:" + mou2V); 


     } catch (Exception e) { 
      m2.setTextSize(25); 
      m2.setText(" إضغط لكتابة نقاطك"); 

     } 

这就是我的第二个活动(阿拉伯语)代码:

Button OK1 = (Button)findViewById(R.id.OK1); 
    OK1.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 


      if (t1.getText().toString().isEmpty()) { 
       Toast.makeText(Arabic.this, "يرجى ملئ جميع الفراغات ", Toast.LENGTH_SHORT).show(); 
      } else if (f1_1.getText().toString().isEmpty()) { 
       Toast.makeText(Arabic.this, "يرجى ملئ جميع الفراغات ", Toast.LENGTH_SHORT).show(); 
      } else if (f2_1.getText().toString().isEmpty()) { 
       Toast.makeText(Arabic.this, "يرجى ملئ جميع الفراغات ", Toast.LENGTH_SHORT).show(); 
      } else if (i1.getText().toString().isEmpty()) { 
       Toast.makeText(Arabic.this, "يرجى ملئ جميع الفراغات ", Toast.LENGTH_SHORT).show(); 
      } else if (mou1.getText().toString().isEmpty()) { 
       Toast.makeText(Arabic.this, "يرجى ملئ جميع الفراغات ", Toast.LENGTH_SHORT).show(); 
      } else { 

       double t1V = Double.parseDouble(t1.getText().toString()); 

       double f1_1V = Double.parseDouble(f1_1.getText().toString()); 

       double f2_1V = Double.parseDouble(f2_1.getText().toString()); 

       double i1V = Double.parseDouble(i1.getText().toString()); 

       double mou1V = Double.parseDouble(mou1.getText().toString()); 



        Intent PasseData_Intent = new Intent(Arabic.this,Mou3adal.class); 
        Bundle bundleba= new Bundle(); 


        bundleba.putDouble("t1V",t1V); 
        bundleba.putDouble("f1_1V",f1_1V); 
        bundleba.putDouble("f2_1V",f2_1V); 
        bundleba.putDouble("i1V",i1V); 
        bundleba.putDouble("mou1V",mou1V); 


        PasseData_Intent.putExtras(bundleba); 

        startActivity(PasseData_Intent); 

       finish(); 

      } 

     } 
    }); 

这就是我的第三个活动(Francais)代码: final EditText t2 =(EditText)findViewById(R.id.t2);

final EditText f1_2 = (EditText) findViewById(R.id.f1_2); 

    final EditText f2_2 = (EditText) findViewById(R.id.f2_2); 

    final EditText i2 = (EditText) findViewById(R.id.i2); 

    final EditText mou2 = (EditText) findViewById(R.id.mou2); 

    Button OK2 = (Button)findViewById(R.id.OK2); 
    OK2.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 


      if (t2.getText().toString().isEmpty()) { 
       Toast.makeText(francais.this, "يرجى ملئ جميع الفراغات ", Toast.LENGTH_SHORT).show(); 
      } else if (f1_2.getText().toString().isEmpty()) { 
       Toast.makeText(francais.this, "يرجى ملئ جميع الفراغات ", Toast.LENGTH_SHORT).show(); 
      } else if (f2_2.getText().toString().isEmpty()) { 
       Toast.makeText(francais.this, "يرجى ملئ جميع الفراغات ", Toast.LENGTH_SHORT).show(); 
      } else if (i2.getText().toString().isEmpty()) { 
       Toast.makeText(francais.this, "يرجى ملئ جميع الفراغات ", Toast.LENGTH_SHORT).show(); 
      } else if (mou2.getText().toString().isEmpty()) { 
       Toast.makeText(francais.this, "يرجى ملئ جميع الفراغات ", Toast.LENGTH_SHORT).show(); 
      } else { 

       double t2V = Double.parseDouble(t2.getText().toString()); 

       double f1_2V = Double.parseDouble(f1_2.getText().toString()); 

       double f2_2V = Double.parseDouble(f2_2.getText().toString()); 

       double i2V = Double.parseDouble(i2.getText().toString()); 

       double mou2V = Double.parseDouble(mou2.getText().toString()); 


       Intent PasseData_Intent2 = new Intent(francais.this, Mou3adal.class); 
       Bundle bundlebf = new Bundle(); 


       bundlebf.putDouble("t2V", t2V); 
       bundlebf.putDouble("f1_2V", f1_2V); 
       bundlebf.putDouble("f2_2V", f2_2V); 
       bundlebf.putDouble("i2V", i2V); 
       bundlebf.putDouble("mou2V", mou2V); 


       PasseData_Intent2.putExtras(bundlebf); 

       startActivity(PasseData_Intent2); 


       finish(); 

      } 
     } 
    }); 
}} 
+0

你可以做dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN,KeyEvent.KEYCODE_BACK)); –

+0

完成应该先来,然后你必须启动Mou3adal活动 –

+0

我会试试这个 –

回答

0

我不是100%肯定你正在尝试做的,但我猜你正在试图完成的活动,并恢复已在当前活动之前在运行活动。如果是这样,则需要恢复先前的活动,而不是启动新的实例。我建议你阅读任务和活动的移出位置:

Tasks and Back Stack

总之,通过默认的Android创建活动类的新实例时,它执行startActivity(),这将是一个不同的实例比为以前创建。这可能会解释你的评论“......它没有起作用,导致它删除了我在第一次活动中已经存在的变量......”。您可能需要使用相应的标志在上面参考提到:

当启动一个活动,您可以通过在意图标志修改活动,其任务的默认关联,你提供给startActivity( )。

如果我对你的问题的理解是正确的,那么“singleInstance”可能就是你应该考虑的。也请看一下onBackPressed()方法。但是,如果你不了解更大的图片以及你想要做的是什么,而不是仅仅写代码来回答你的(第一个)问题,那么它会帮助你更多(并且会为你节省大量的后续问题)花时间阅读这篇文章。

+0

thnx为这anwser,你是真的我想尝试完成一项活动,并恢复在当前活动之前运行的活动。所以你能告诉我我需要添加或删除哪些代码吗 –

+0

如果你试图学习而不是仅仅从答案中复制代码,那么最好。如果您恢复之前的活动,它将不会获得您想要通过bundlebf传递的数据。但是,如果这就是你想要做的,只需调用onBackPressed()而不是开始一个新的活动并杀死当前的活动。从我所知道的情况来看,您希望使用此活动的一些数据(bundlebf)返回到之前的实例。那么你应该在你的第一个活动中使用startActivityForResult()而不是startActivity()。 – Kaamel

+0

好的谢谢你的男人 –